Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package Tarea;
- import java.util.Scanner;
- public class Principal
- {
- public static void main(String[] args)
- {
- Scanner leer = new Scanner(System.in);
- SOP("Expresion Matematica: ");
- String EXPRESION = leer.nextLine();
- if(EXPRESION.length() > 25)
- {
- SOP("La Expresion no debe ser mayor a 25 Caracteres");
- return;
- }
- int s = 0;
- do{
- SOP("1.- Infija - PostFija");
- SOP("2.- Infija - PreFija");
- s = leer.nextInt();
- if(s == 1)
- {
- ConvertirAPostFija(EXPRESION);
- }else if(s == 2){
- ConvertirAPreFija(EXPRESION);
- }
- }while(s != 1 && s != 2);
- }
- public static void ConvertirAPostFija(String EXPRESION)
- {
- String sol = "";
- Pila P01 = new Pila(25);
- char letra;
- SOP("Recorremos la EXPRESION de izquierda a derecha");
- for(int i = 0; i < EXPRESION.length(); i++)
- {
- letra = EXPRESION.charAt(i);
- if(letra == '('){
- SOP("El caracter es ( asi que va directo a la pila");
- P01.InsertarPila(letra);
- }else if(letra == ')')
- {
- SOP("El caracter es ) asi que saca todos los elementos de la pila hacia la solucion hasta encontrar ( y lo saca de la pila");
- while(P01.VerPila() && P01.DatoPila != '(')
- {
- sol = sol + (char)P01.DatoPila;
- P01.RemoverPila();
- }
- P01.RemoverPila();
- }else if(!EsOperador(letra)){
- SOP("Si es operando va directo a la solucion");
- sol = sol + letra;
- }else{
- if(!P01.VerPila()){
- SOP("Si es operando y la pila esta vacia va directo a la pila");
- P01.InsertarPila(letra);
- }else{
- SOP("Si es operando y la pila no esta vacia se sacan los operando que esten en ella que sean menor o igual valor al que sea decea insertar");
- while(P01.VerPila() && Valor(letra) <= Valor((char)P01.DatoPila))
- {
- sol = sol + (char)P01.DatoPila;
- P01.RemoverPila();
- }
- SOP("Y se inserta a la pila");
- P01.InsertarPila(letra);
- }
- }
- }
- SOP("Al terminar de recorrer la EXPRESION");
- SOP("Se sacan todos los elementos de la pila y van directo a la solucion");
- while(P01.RemoverPila())
- sol = sol + (char)P01.DatoPila;
- System.out.println("Solucion Final: " + sol);
- }
- public static void ConvertirAPreFija(String EXPRESION)
- {
- String sol = "", sol1 = "";
- Pila P01 = new Pila(25);
- char letra;
- for(int i = EXPRESION.length()-1; i >= 0; i--)
- {
- letra = EXPRESION.charAt(i);
- if(letra == ')'){
- SOP("El caracter es ) asi que va directo a la pila");
- P01.InsertarPila(letra);
- }else if(letra == '(')
- {
- SOP("El caracter es ( asi que saca todos los elementos de la pila hacia la solucion hasta encontrar ) y lo saca de la pila");
- while(P01.VerPila() && (char)P01.DatoPila != ')')
- {
- sol = sol + (char)P01.DatoPila;
- P01.RemoverPila();
- }
- P01.RemoverPila();
- }else if(!EsOperador(letra)){
- SOP("Si es operando va directo a la solucion");
- sol = sol + letra;
- }else{
- if(!P01.VerPila()){
- SOP("Si es operando y la pila esta vacia va directo a la pila");
- P01.InsertarPila(letra);
- }else{
- SOP("Si es operando y la pila no esta vacia se sacan los operando que esten en ella que sean menor o igual valor al que sea decea insertar");
- while(P01.VerPila() && Valor(letra) <= Valor((char)P01.DatoPila))
- {
- sol = sol + (char)P01.DatoPila;
- P01.RemoverPila();
- }
- SOP("Y se inserta a la pila");
- P01.InsertarPila(letra);
- }
- }
- }
- SOP("Al terminar de recorrer la EXPRESION");
- SOP("Se sacan todos los elementos de la pila y van directo a la solucion");
- while(P01.RemoverPila())
- sol = sol + (char)P01.DatoPila;
- SOP("Se invierte la expresion");
- for(int i = sol.length()-1; i >= 0; i--)
- sol1 = sol1 + sol.charAt(i);
- System.out.println("Solucion Final: " + sol1);
- }
- private static void SOP(String mensaje)
- {
- System.out.println(mensaje);
- }
- private static int Valor(char letra)
- {
- if(letra == '+' || letra == '-')
- return 1;
- if(letra == '*' || letra == '/')
- return 2;
- if(letra == '^')
- return 3;
- return 0;
- }
- private static boolean EsOperador(char letra)
- {
- boolean resp = false;
- if(letra == '+' || letra == '-' || letra == '*' || letra == '/' || letra == '^')
- resp = true;
- return resp;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement