Advertisement
FacuValverdi

EdD-TP2-PTO3-Notacion interfija a posfija

Sep 24th, 2022 (edited)
899
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.73 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 eje3 {
  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.    
  98.     public static void main(String[] args) {
  99.         // TODO Auto-generated method stub
  100.         ArrayList<Character> posfija= new ArrayList<Character>();
  101.         Stack<Character> interfija= new Stack<Character>();
  102.         Scanner leer = new Scanner(System.in);
  103.         System.out.println("Ingrese expresion matematica en notacion interfija: ");
  104.         String ecuacion=leer.nextLine();
  105.         interFijaAPost(ecuacion,posfija,interfija);
  106.         System.out.println("Expresion Matematica en posfija: "+mostrarArreglo(posfija));
  107.     }
  108. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement