AiSD Odwrotna notacja polska


import java.util.Scanner; import java.util.Stack; import java.util.StringTokenizer; import java.util.Vector; public class Main { private String wyrazenie; private String onp; private double wynik; public Main(String wyrazenie) { this.wyrazenie = wyrazenie; this.onp = ""; zamiana(); wynik=oblicz(); } private void zamiana() { Stack stos = new Stack(); StringTokenizer st = new StringTokenizer(wyrazenie, "+-*/()^", true); while(st.hasMoreTokens()) { String s = st.nextToken(); if( s.equals("+") || s.equals("*") || s.equals("-") || s.equals("/") || s.equals("^")) { while(!stos.empty() && priorytet(stos.peek()) >= priorytet(s)) onp += stos.pop() + " "; stos.push(s); } else if(s.equals("(")) stos.push(s); else if(s.equals(")")) { while(!stos.peek().equals("(")) onp += stos.pop() + " "; stos.pop(); } else onp += s + " "; } while(!stos.empty()) onp += stos.pop() + " "; } public static int priorytet(String operator) { if(operator.equals("+") || operator.equals("-")) return 1; else if(operator.equals("*") || operator.equals("/")) return 2; else if(operator.equals("^")) return 3; else return 0; } private double oblicz() { Stack stos = new Stack(); StringTokenizer st = new StringTokenizer(onp, " "); while(st.hasMoreTokens()) { String s = st.nextToken(); if (!s.equals("+") && !s.equals("*") && !s.equals("-") && !s.equals("/") && !s.equals("^")) { double wartosc = Double.parseDouble(s); stos.push(wartosc); } else { double wartosc1 = stos.pop(); double wartosc2 = stos.pop(); switch(s.charAt(0)) { case '*': { stos.push(wartosc2 * wartosc1); break; } case '+': { stos.push(wartosc2 + wartosc1); break; } case '-': { stos.push(wartosc2 - wartosc1); break; } case '/': { stos.push(wartosc2 / wartosc1); break; } case '^': { stos.push(Math.pow(wartosc2,wartosc1)); break; } } } } return stos.pop(); } public String toString() { return wynik + "\t " + onp; } public static void main(String args[]) { Scanner sc = new Scanner(System.in); int t = Integer.parseInt(sc.nextLine()); Vector tablica = new Vector(); for(int k=1; k<=t; k++) tablica.add( new Main(sc.nextLine())); for(int i=0;i
Wyszukiwarka

Podobne podstrony:
Odwrotna notacja polska
odwrotna notacja polska kolokwium
Poezja polska średniowiecza
Rosjanie poczynają sobie z Polską coraz śmielej
Instrukcja Programowania Zelio Logic 2 wersja polska
WYTYCZNE TCCC 2014 WERSJA POLSKA
Polska norma turbozespoly wiatrowe(1)
POLSKA DROGA FIATA 3
file D Download Polki Wirtualna Polska8
Advanced Project Management?ycja polska?prom
489 Polska reklamaq51 874 4
polskawalczaca com • Zobacz wątek Zarcik3

więcej podobnych podstron