Expressões Matemáticas

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