Advertisement
FacuValverdi

EdD-TP2-PTO5-Calculo de una expresion matematica en notacion posfija

Sep 24th, 2022 (edited)
1,178
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.99 KB | None | 0 0
  1. package tp2;
  2. import java.util.Scanner;
  3. import java.util.Stack;
  4. import java.util.ArrayList;
  5. public class eje5 {
  6.  
  7.     public static boolean Operadores(char ch1) {
  8.         boolean aux=false;
  9.         char[] operadores= {'*', '/', '+', '-'};
  10.         for(char simbolo : operadores) {
  11.             if(ch1==simbolo) {
  12.                 aux=true;
  13.             }
  14.         }
  15.         return aux;
  16.     }
  17.     public static int prioridadesOperadores(char ch1){
  18.         int aux=0;
  19.         switch(ch1){
  20.         case '*':
  21.             aux=2;
  22.             break;
  23.         case '/':
  24.             aux=2;
  25.             break;
  26.            
  27.         case '+':  
  28.             aux=1;
  29.             break;
  30.            
  31.         case '-':
  32.             aux=1;
  33.             break;
  34.         }
  35.         return aux;
  36.     }
  37.     public static boolean Operandos(char ch1) {
  38.         boolean aux=false;
  39.         char[] operados= {'1', '2', '3', '4','5','6','7','8','9','0'};
  40.         for(char simbolo : operados) {
  41.             if(ch1==simbolo) {
  42.                 aux=true;
  43.             }
  44.         }
  45.         return aux;
  46.     }
  47.    
  48.    
  49.     public static void interFijaAPost(String ecuacion,ArrayList<Character> posfija, Stack<Character> interfija) {
  50.         char aux;
  51.         for(int i=0;i<ecuacion.length();i++) {
  52.             aux=ecuacion.charAt(i);
  53.             if(Operandos(aux)) {
  54.                 posfija.add(aux);
  55.             }else
  56.                 if(Operadores(aux)) {
  57.                     if(interfija.isEmpty()) {
  58.                         interfija.push(aux);
  59.                     }else {
  60.                         if(prioridadesOperadores(aux)>prioridadesOperadores(interfija.peek())){
  61.                             interfija.push(aux);
  62.                         }else {
  63.                             if(prioridadesOperadores(aux)<=prioridadesOperadores(interfija.peek())) {
  64.                                 posfija.add(interfija.pop());
  65.                                
  66.                                 if(Operadores(aux)) {
  67.                                     if(interfija.isEmpty()) {
  68.                                         interfija.push(aux);
  69.                                     }else {
  70.                                         if(prioridadesOperadores(aux)>prioridadesOperadores(interfija.peek())){
  71.                                         interfija.push(aux);
  72.                                         }else {
  73.                                                 if(prioridadesOperadores(aux)<=prioridadesOperadores(interfija.peek())) {
  74.                                                 posfija.add(interfija.pop());
  75.                                                 interfija.push(aux);
  76.                                                 }
  77.                                         }
  78.                                     }
  79.                                 }
  80.                                
  81.                             }
  82.                         }
  83.                     }
  84.             }  
  85.         }
  86.         while(!interfija.empty()) {
  87.             posfija.add(interfija.pop());
  88.         }
  89.     }
  90.     public static String mostrarArreglo(ArrayList<Character> arreglo) {
  91.         String aux="";
  92.         for(Character c:arreglo) {
  93.             aux+=c;
  94.         }
  95.         return aux;
  96.     }
  97.       public static int Calculos(int opa, int opb, char ec)
  98.       //Para el Ejercicio 5
  99.       {
  100.           int resultado = 0;
  101.           if (ec == '*')
  102.           {
  103.               resultado = (opa * opb);
  104.           }
  105.           else if (ec == '/')
  106.           {
  107.               resultado = (opa / opb);
  108.           }
  109.           if (ec == '+')
  110.           {
  111.               resultado = (opa + opb);
  112.           }
  113.           else if (ec == '-')
  114.           {
  115.               resultado = (opa - opb);
  116.           }
  117.           return resultado;
  118.       }
  119.     public static void evaluarExpresion(String ecuacion, Stack<Integer> pila) {
  120.         //Para el ejercicio 5
  121.         char aux;
  122.         for(int i=0;i<ecuacion.length();i++) {
  123.             aux=ecuacion.charAt(i);
  124.             if(Operandos(aux)) {
  125.                 pila.push(Character.getNumericValue(aux));
  126.                
  127.             }else{
  128.                 if(Operadores(aux)) {
  129.                      int ope2 = pila.pop();
  130.                      int ope1 = pila.pop();
  131.                      int cal = Calculos(ope1, ope2, aux);
  132.                      pila.push(cal);
  133.                 }
  134.             }
  135.         }
  136.          if (!pila.empty())
  137.          {
  138.              System.out.println("El valor del calculo es: " + pila.peek());
  139.          }
  140.        
  141.     }
  142.    
  143.     public static void main(String[] args) {
  144.    
  145.         //EJERCICIO 3
  146.         ArrayList<Character> posfija= new ArrayList<Character>();
  147.         Stack<Character> interfija= new Stack<Character>();
  148.         Stack<Integer> calculo= new Stack<Integer>();
  149.         Scanner leer = new Scanner(System.in);
  150.         System.out.println("Ingrese expresion matematica en notacion interfija: ");
  151.         String ecuacion=leer.nextLine();
  152.         interFijaAPost(ecuacion,posfija,interfija);
  153.         String ecuacionposfija=mostrarArreglo(posfija);
  154.        
  155.         //EJERCICIO 5
  156.         System.out.println("Expresion Matematica en posfija: "+ecuacionposfija);
  157.         evaluarExpresion(ecuacionposfija,calculo);
  158.     }
  159. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement