Ae Felipe, o jeito q eu conheço de resolver esse tipo de problema eh usando arvores. Voce vai criando a arvore e depois percorre ela pra saber o resultado, mas naum me lembro muito bem qaul eh o jeito de percorrer. Bom, no seu caso a arvore ficaria assim:
raiz/|\1+/|\2*3
R
riqueneilPJ
Olá!
Darkseid, não precisa de uma estrutra tão complexa para se cálcular com precedência, se bem que a árvore é a mais confiável…
Pode-se usar uma pilha de execução…
pilha 1 - guarda os números
pilha 2 - operandos
pilha 3 - auxiliar (para transição)
vc primiero empilha os dados na pilha, pode ser usado em forma de vetor, e depois pelos sinais vc pega eles por ordem e testa a precedência dos sinais… certo??
[]'s
H
HSNPJ
Transforma a expressão para a notação polonesa reversa, que depois é só ler da esquerda para a direita calculando o resultado. Isso pode ser feito porque a notação já leva em conta a precedência dos operadores. Sua expressão 1 + 2 * 3 ficaria 1 2 3 * +, que seria avaliada da seguinte forma:
1 2 3 * +
1 6 +
7
Procura no Google “algoritmo polonesa pós fixa” que você deve achar.
Até mais,