Olá, Boa Noite.
Meu desafio é fazer um programa que irá ler uma string em uma linha, essa string é uma expressão matemática. Ex: "((7+4)x(3-4))-(2x3)"
E com essa string tenho que dar o resultado de maneira correta da expressão.
Não estou conseguindo pensar em uma maneira, sei que tem que usar o conceito de pilha, mas ainda assim não sei como implementar.
Oi Thiago.
Cara, eu recomendaria você estudar expressoes regulares e conceitos de automatos.
Tenho certeza que ambos os conceitos te darão uma visão melhor de como implementar essa aplicação.
Digo pq o que você quer fazer é bem avançado… então, tentar explicar sem exemplos simples acabaria confundindo você;
Vai por mim, procura por expressoes regulares e conceitos de automatos.
1 curtida
Você pode fazer um parser decendente recursivo.
Certa vez eu fiz um para tratar operações de conjuntos, está disponível no meu GitHub.
Você vai perceber que é praticamente a mesma coisa, só vai ter que adaptar o código da seguinte forma:
- o método
parseIntersection
vai ter que tratar o símbolo ‘x’;
- o método
computeUnion
vai ter que somar os dois valores recebidos por parâmetro;
- o método
computeDifference
vai ter que subtrair os dois valores recebidos por parâmetro;
- o método
computeIntersection
vai ter que multiplicar os dois valores recebidos por parâmetro;
1 curtida