Professional Documents
Culture Documents
[Fin de condicional]
5.- Si se encuentra un ), entonces:
(a) Repetidamente sacar de P y aadir a S cada operador (de
la cima de P), hasta que encuentre un (.
(b) Eliminar el ( de P (no aadir a S).
[Fin de condicional]
6.- Si se encuentra un OPERANDO (2,23,6), aadirlo a S.
[Fin del Bucle]
7.- Salir.
Nota: Los operadores siguen la siguiente jerarqua (El de arriba
es el que tiene mayor jerarqua hasta abajo el que tiene la
menor):
1. ^
2. *
3. +
4. )
5. (
pilas
new Stack < String > (); //Pila
new Stack < String > (); //Pila
new Stack < String > (); //Pila
case 3:
case 4:
while(pref(P.peek()) >= pref(E.peek())) {
S.push(P.pop());
}
P.push(E.pop());
break;
case 2:
while(!P.peek().equals("(")) {
S.push(P.pop());
}
P.pop();
E.pop();
break;
default:
S.push(E.pop());
}
}
//Eliminacion de `impurezas en la expresiones
algebraicas
String infix = expr.replace(" ", "");
String postfix = S.toString().replaceAll("[\\]\\[,]",
"");
//Mostrar resultados:
System.out.println("Expresion Infija: " + infix);
System.out.println("Expresion Postfija: " + postfix);
}catch(Exception ex){
System.out.println("Error en la expresin algebraica");
System.err.println(ex);
}
}
//Depurar expresin algebraica
private static String depurar(String s) {
s = s.replaceAll("\\s+", ""); //Elimina espacios en
blanco
s = "(" + s + ")";
String simbols = "+-*/()";
String str = "";
//Deja espacios entre operadores
for (int i = 0; i < s.length(); i++) {
if (simbols.contains("" + s.charAt(i))) {
str += " " + s.charAt(i) + " ";