Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Expresion;
- import Pila.Pila;
- public class PreFija extends Main
- {
- Pila P;
- String EXP;
- String sol = "";
- String sol1 = "";
- public PreFija(String Exp)
- {
- P = new Pila(Exp.length());
- EXP = Exp;
- }
- public void Evaluar()
- {
- boolean lmao;
- SOP("Empezamos a recorrer la expresion de Derecha a Izquierda");
- for(int x = EXP.length()-1; x >= 0; x--)
- {
- char p = EXP.charAt(x);
- if(!EsOperador(p))
- {
- if(p == ')')
- {
- SOP("Como es parentesis que cierra [)] va directo a la pila");
- P.InsertarPila(p);
- }else if(p == '('){
- SOP("Como es parentesis que abre [(] sacamos todos los elementos de la pila hacia la solucion \nhasta encontrar parentesis que abre y lo sacamos de la pila.");
- P.VerPila();
- while((char)P.DatoPila != ')' && P.RemoverPila())
- {
- if((char)P.DatoPila != ')')
- sol += (char)P.DatoPila;
- }
- }else{
- SOP("Como el caracter [" + p + "] es operando va directo a la solucion.");
- sol += p;
- }
- }else{
- SOP("Como el caracter [" + p + "] es operador ");
- if(!P.VerPila())
- {
- SOP("y la pila esta vacia va directo a la pila");
- P.InsertarPila(p);
- }else{
- SOP("y la pila no esta vacia empezamos a checar, por las prioridades de operadores");
- SOP("empezamos a sacar todos los operadores de menor o igual prioridad los saca de la pila y los envia a la solucion");
- lmao = true;
- while(lmao && P.VerPila())
- {
- SOP("Checamos [" + p + "] <= [" + (char)P.DatoPila + "] = " + EsMenor(p,(char)P.DatoPila));
- if(EsMenor(p,(char)P.DatoPila))
- {
- sol += (char)P.DatoPila;
- P.RemoverPila();
- }else{
- lmao = false;
- }
- }
- SOP("Y se envia el operador a la pila");
- P.InsertarPila(p);
- }
- }
- SOP("Solucion Hasta el momento: " + sol);
- }
- SOP("Retiramos todos los elementos de la pila y los ingresamos a la solucion");
- while(P.RemoverPila())
- sol += (char)P.DatoPila;
- SOP("Solucion Obtenida hasta el momento: " + sol);
- SOP("Invertimos la solucion");
- for(int x = sol.length()-1; x >= 0; x--)
- sol1 += sol.charAt(x);
- SOP("Solucion Final: " + sol1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement