/* * Aplicacion para evaluar expresion y convertir a postfija */ // Clase ...

isEmpty()? 's': opcion.charAt(0);. }} public void postfija(String l) { int i=0; char x=' '; while (i< l.length())//analiza caracter por caracter. { x= l.charAt(i); aux.insertar(x);.
59KB Größe 28 Downloads 562 vistas
/* * Aplicacion para evaluar expresion y convertir a postfija */ // Clase PosApp tiene los metodos para ingresar, evaluar y mostrar // una expresión matematica y convertir a postfija. package postfija; /** * * @author Kelly Zarco */ import java.util.Scanner; public class PosApp { Pila cara; Pila aux; char exp[]; int c;int j=0; Scanner ingreso; public PosApp() { c=10; cara= new Pila(); aux=new Pila(); exp= new char [c]; ingreso= new Scanner(System.in); } public void Generar() { String exp=" "; char op='S'; Scanner ingreso= new Scanner(System.in); while (op!='N' && op!='n'){ System.out.println("Ingrese una expresion: "); exp= ingreso.next(); postfija(exp); System.out.println("¿Desea Continuar? S/N"); String opcion= ingreso.next(); op = opcion.isEmpty()? 's': opcion.charAt(0); }} public void postfija(String l) { int i=0; char x=' '; while (i< l.length())//analiza caracter por caracter { x= l.charAt(i); aux.insertar(x); i++; }

retornar(aux,cara); Procesar(cara); } public void retornar(Pila origen, Pila destino){ Nodo x; while(!origen.pilaVacia()){ x=origen.quitar(); destino.insertar(x); } } //empieza el metodo para evaluar caracter por caracter public void Procesar(Pila P){ char y=' ';Nodo x;char e=' '; while(!cara.pilaVacia()){ x=cara.quitar(); e=x.getDato(); if ((e!='*')&&(e!='^') &&(e!='/')&&(e!='+')&&(e!='-')&&(e!='(')&&(e!=')')) //1 { exp[j]=x.getDato(); j++; } else//2 { if(aux.pilaVacia())//4 { aux.insertar(x.getDato()); } else { if(x.getDato()=='(')//3 { aux.insertar(x.getDato()); } else { if(x.getDato()==')')//2 { CicloQuitar( aux); } else { Nodo z=aux.quitar(); y=z.getDato(); if(y=='('){ aux.insertar(y); aux.insertar(x.getDato()); } else

CompararPrioridad(y,x.getDato()); }//2 }

//3

}//4 }//1 } while(!aux.pilaVacia()){ Nodo n=aux.quitar(); exp[j]=n.getDato(); j=j+1; } } public void CicloQuitar(Pila P) { Nodo x; x=P.quitar(); while(x.getDato()!='(') { exp[j]=x.getDato(); j++; x=P.quitar(); } } public void CompararPrioridad (char x, char y) { if(x