SoloCodigo
Programación General => C/C++ => Mensaje iniciado por: parapoderacceder en Viernes 12 de Mayo de 2006, 01:50
-
Estoy haciendo un evaluador de espresiones matematicas (parser) para una aplicacion (un CAS), lo que sucede es que hice uno usando pilas y con evaluacion inorden (infix) pero para mejor rendimiento necesito hacer el parser con arboles binarios.
por ahi tengo unos codigos de uso de arboles binarios pero no me son suficientes.
basicamente mi problema es que no se como rellenar el arbol binario con la expresion matematica para luego evaluarla, tiene que evaluar expresiones de cualquier tipo como 3*x+12sin(60)/log(3)+(4.5*12!).
entonces si alguien por favor me orientara con el procedimiento para rellenar y evaluar el susodicho arbol se lo agradeceria...... B)
-
aclaro que unicamente solicito los pasos descriptivos generalizados de algun algoritmo y no el codigo fuente.
-
Hola, que tal.
Lo que tienes que hacer es tomar el operador de menos prioridad que encuentres y ponerlo como la raíz del arbol, de aquí te saldran dos expresiones a las cuales les aplicas la misma operación y así lo haces recursivamente hasta que ya no encientres más operadores, poniendo al final los número a los que se les aplica la aperación.
Por ejemplo, si tienes 2*x+3/5, el árbol te quedaría así:
+
/ \
* /
/\ /\
2 x 3 5
Eso es loúnico que debes hacer, espero me entiendas.
Hasta luego
-
muchas gracias por tu ayuda, es lo que buscaba.