Bom, tenho que pegar uma expressão do tipo:
(((1+2)-3)+(4*5))
E calcular seu resultado, além de exibir a sua leitura em pré-ordem, in-ordem e pós-ordem.
Sei que para in-ordem é apenas tirar os parênteses e pós-ordem existe um algoritmo usando pilhas.
Mas e para pré-ordem?
Preciso criar a árvore binária da expressão pra poder ler em pré-ordem?
Se sim, como criar essa árvore binária?
Sei que para in-ordem é apenas tirar os parênteses e pós-ordem existe um algoritmo usando pilhas.
Mas e para pré-ordem?
Acho que a ideia é usar os algoritmos em todos os casos, ou seja, o de pré-ordem, o de in-ordem e o de pós-ordem. Simplesmente “tirar os parenteses” não usa o conhecimento do algoritmo de in-ordem, por exemplo.
Acho que esse é exatamente o objetivo do exercício, não?
Certamente deve haver um código pronto por aí, mas, como a ideia é você desenvolver o seu próprio, por que não tenta?
Sim, o objetivo é criar o meu próprio código.
O problema é que eu não tenho a mínima idéia de como fazer isso.
Já implementei uma árvore binária com apenas números.
Ex:
— 3------
—/ -----
–2--5----
-----/ —
----4–7--
Mas com expressões eu estou “viajando”…
Preciso de uma idéia…
gpd38
Faz um tempinho que fiz. Usei pilha.
Na minha expressao el teria que me mostrar infixada e posfixada e poder ter uns recursos a mais.
Ela nao retorna resultado porque nao era preciso, mas a logica se vc entender vc pode utilizar.
Qualquer coisa me manda uma msg que eu tento te explicar. Estou tentando transforma-la para inteiro e mostrar a conta na tela.
Se eu conseguir eu te mando um aviso