Infijo A Postfijo
Enviado por Paqueton • 10 de Noviembre de 2013 • 707 Palabras (3 Páginas) • 269 Visitas
import java.util.Scanner;
import java.util.Stack;
public class Notaciones {
public static void main(String[] args) {
System.out.println("*Escriba una notacion Infija: ");
Scanner leer = new Scanner(System.in);
//Depurar
String expr = depurar(leer.nextLine());
String[] arrayInfix = expr.split(" ");
//Declaración de las pilas
Stack < String > E = new Stack < String > (); //Pila entrada
Stack < String > O = new Stack < String > (); //Pila temporal para operadores
Stack < String > S = new Stack < String > (); //Pila salida
//Añadir la array a la Pila de entrada (E)
for (int i = arrayInfix.length - 1; i >= 0; i--) {
E.push(arrayInfix[i]);
}
try {
//Algoritmo Infijo a Postfijo
while (!E.isEmpty()) {
switch (pref(E.peek())){
case 1:
O.push(E.pop());
break;
case 3:
case 4:
while(pref(O.peek()) >= pref(E.peek())) {
S.push(O.pop());
}
O.push(E.pop());
break;
case 2:
while(!O.peek().equals("(")) {
S.push(O.pop());
}
O.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 expresión algebraica");
System.err.println(ex);
}
}
//Depurar expresión 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 += " "
...