PDA

Ver la Versión Completa : arbol expresiones artimeticas


halizia
18-07-2006, 09:18:15
hola,

quisiera saber si hay programas que dada una expresion del tipo a+b*c generen el árbol sintáctico y las evaluen correctamente.

Gracias

Arcioneo
18-07-2006, 09:59:51
:D hola,

quisiera saber si hay programas que dada una expresion del tipo a+b*c generen el árbol sintáctico y las evaluen correctamente.

Gracias

Pues no los hay pero si hay muchos libros donde vienen los algoritmos de como hacer un analizador sintactico y que ademas te evalue las expresiones.

Te recomiendo uno llamado "Estructuras de datos en C y C++"

Ñuño Martínez
18-07-2006, 17:55:37
También tienes el YACC (http://dinosaur.compilertools.net/) y el Bison (http://www.gnu.org/software/bison/), que no es exactamente lo que pides pero puede ayudarte (o a otra persona que haya llegado hasta aquí buscando algo parecido).

Y también te puedes mirar el libro "C: Manual de referencia" de Hervert Schildt, que incluye un Analizador Matemático Recursivo Descendente. El nombre puede asustar, pero es muy fácil entender cómo funciona.

halizia
23-07-2006, 14:58:25
yo lo que me refiero es que por ejemplo, el usuario introduzca una expresion del tipo: a+5*b dónde de valores a 'a' y a 'b' y me devuelva el valor correspondiente, por ejemplo si a=2 y b=3 el resultado seria 17

no sé si me explico bien

Saludos

Arcioneo
02-08-2006, 09:27:06
yo lo que me refiero es que por ejemplo, el usuario introduzca una expresion del tipo: a+5*b dónde de valores a 'a' y a 'b' y me devuelva el valor correspondiente, por ejemplo si a=2 y b=3 el resultado seria 17

no sé si me explico bien

Saludos

La verdad que no te explicas bien, suena extrañamente simple tu pregunta

o que quieres es que haga las operaciones por orden, por la precedencia de los signos no?

A bueno, pues el algoritmo viene en el libro que te dije, es muy sencillo y esta en un solo capitulo todo el codigo.

O si no busca, la palabra, PREFIJO, POSFIJO, e INFIJO, que son los ordenes en que tienes que convertir la expresion para que se haga correctamente.:cool: