C/Visual C - INFIJA

 
Vista:

INFIJA

Publicado por Jesus Rivera (1 intervención) el 06/05/2006 06:20:13
Necesito que me ayuden a realizar un programa que realize lo siguiente:

que convierta una operacion aritmetica de notacion infija a prefija

por ejemplo:

pasar a+b*c-d esto pasarlo a +*-abcd

pasar los operadores al inicio y luego las variables, lo tengo que hacer con pilas y con funciones

please help me
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:INFIJA

Publicado por Jesus Oliver (166 intervenciones) el 08/05/2006 14:35:07
Sencillo.
Haces dos pilas una de operadores y otra de argumentos. Recorres la cadena de entrada y segun pertenezca a uno u otro haces push del elemento en la pila correspondiente.
La gracia es extraerlo, ya que al hacer pop (ya no hay stop) los extraes en orden invertido. asi que tienes que invertir las cadenas y luego concatenarlas.

Pseudocodigo

Mientras(no es fin de candena)
si esOperador(elementoActual) entonces
pushOperador(elementoActual)
sinosi esArgumento(elementoActual) entonces
pushArgumento(elementoActual)
sino
error(elementoActual)
fin si
fin mientras

/* Para invertir una pila, lo mejor es usar una pila auxiliar*/
Mientras (no findePila())
pushPilaAux(pop(pilaX))
fin mientras

y luego muestras la pilaAux

Espero que te sea de ayuda!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar