Advertisement
s00rk

Infija -> PreFija

Sep 28th, 2011
300
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.22 KB | None | 0 0
  1. package Expresion;
  2.  
  3. import Pila.Pila;
  4.  
  5. public class PreFija extends Main
  6. {
  7.     Pila P;
  8.     String EXP;
  9.     String sol = "";
  10.     String sol1 = "";
  11.    
  12.     public PreFija(String Exp)
  13.     {
  14.             P = new Pila(Exp.length());
  15.             EXP = Exp;
  16.     }
  17.  
  18.     public void Evaluar()
  19.     {
  20.         boolean lmao;
  21.         SOP("Empezamos a recorrer la expresion de Derecha a Izquierda");
  22.         for(int x = EXP.length()-1; x >= 0; x--)
  23.         {
  24.             char p = EXP.charAt(x);
  25.             if(!EsOperador(p))
  26.             {
  27.                 if(p == ')')
  28.                 {
  29.                     SOP("Como es parentesis que cierra [)] va directo a la pila");
  30.                     P.InsertarPila(p);
  31.                 }else if(p == '('){
  32.                     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.");
  33.                     P.VerPila();
  34.                     while((char)P.DatoPila != ')' && P.RemoverPila())
  35.                     {
  36.                         if((char)P.DatoPila != ')')
  37.                             sol += (char)P.DatoPila;                       
  38.                     }
  39.                 }else{
  40.                     SOP("Como el caracter [" + p + "] es operando va directo a la solucion.");
  41.                     sol += p;
  42.                 }
  43.             }else{
  44.                 SOP("Como el caracter [" + p + "] es operador ");
  45.                 if(!P.VerPila())
  46.                 {
  47.                     SOP("y la pila esta vacia va directo a la pila");
  48.                     P.InsertarPila(p);
  49.                 }else{
  50.                     SOP("y la pila no esta vacia empezamos a checar, por las prioridades de operadores");
  51.                     SOP("empezamos a sacar todos los operadores de menor o igual prioridad los saca de la pila y los envia a la solucion");
  52.                    
  53.                     lmao = true;
  54.                     while(lmao && P.VerPila())
  55.                     {
  56.                         SOP("Checamos [" + p + "] <= [" + (char)P.DatoPila + "] = " + EsMenor(p,(char)P.DatoPila));
  57.                         if(EsMenor(p,(char)P.DatoPila))
  58.                         {
  59.                             sol += (char)P.DatoPila;
  60.                             P.RemoverPila();
  61.                         }else{                         
  62.                             lmao = false;
  63.                         }
  64.                     }
  65.                     SOP("Y se envia el operador a la pila");
  66.                     P.InsertarPila(p);
  67.                 }
  68.             }  
  69.             SOP("Solucion Hasta el momento: " + sol);
  70.         }
  71.         SOP("Retiramos todos los elementos de la pila y los ingresamos a la solucion");
  72.         while(P.RemoverPila())
  73.             sol += (char)P.DatoPila;
  74.        
  75.         SOP("Solucion Obtenida hasta el momento: " + sol);
  76.        
  77.         SOP("Invertimos la solucion");
  78.         for(int x = sol.length()-1; x >= 0; x--)
  79.             sol1 += sol.charAt(x);
  80.            
  81.         SOP("Solucion Final: " + sol1);
  82.     }
  83. }
  84.  
  85.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement