Expresiones Polacas

Iniciado por soser, 2 Octubre 2010, 05:10 AM

0 Miembros y 1 Visitante están viendo este tema.

soser

Bueno, pues esta vez debo de hacer un programa que evalue expresiones polacas, es decir que las pase de infijo a prefijo y postfijo, he estado buscando informacion y encuentro de como es la logica para transformar a expresiones a postfijo, pero no a prefijo, podrian explicarme como es la logica o darme alguna informacion que me sirva, desde ya gracias.

globsharp

Me parece que lo que se suele hacer es pasar de infijo a postfijo y de postfijo a prefijo, por tanto, usarías el algoritmo para pasar de infijo a postfijo y luego tendrías que pasarlo a prefijo.

Un algoritmo en sí no conozco, pero imagino que pasar de postfijo a prefijo tiene que ser mas sencillo que pasar de infijo a prefijo o de infijo a postfijo, otra idea que se me ocurrió pero que no he probado si funciona sería, tomar el algoritmo que pasa de infijo a postfijo y modificarlo debidamente para que los operadores precedan a los operandos, he pensado que quizá si en vez de usar una pila se usa una cola o simplemente guardas en la pila los operandos y en la salida los operadores puedas hallar la manera.

Por ahí deben ir los tiros... es complicado encontrarlo por internet porque lo habitual es pasar de infijo a postfijo, pues este último es mas interesante computacionalmente.

Otra idea podría ser utilizar el algoritmo de resolución de una operación en notación postfijo para que cada vez que debas realizar una operación binaria (dos operandos operados por un operador) en vez de sustituir la expresión en la pila por el resultado, guardar dicha operación tal cual en notación prefijo en otra pila.

Todo esto son solo ideas, pero no las he llevado a cabo, madúralas a ver si te ayudan a dar con el camino hacia la solución a tu planteamiento.

Saludos.
Duérmete

soser

No hace mucho me han explicado que para pasar de una expresion infijo a prefijo se procede de la misma manera que en postfijo, solo que en vez de evaluar de izquierda a derecha se hace de derecha a izquierda y una vez terminado la evaluacion se invierte la cadena, la cual seria en si el prefijo.
Hare pruebas con las ideas que me respondiste y vere que tan cierto es lo que me explicaron.
;D gracias