Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- public class ONP_main {
- static Stos stos = new Stos();
- static ArrayList<String> vector = new ArrayList<>();
- public static void main(String[] args)
- {
- //***************na ONP*****************************//
- for(int i=0; i<args.length; i++)
- {
- if(czyliczba(args[i]))
- {
- vector.add(args[i]);
- }
- else
- {
- switch(args[i])
- {
- case "(":
- {
- stos.Push("(");
- break;
- }
- case ")":
- {
- nawiasy();
- break;
- }
- case "+":
- {
- if((stos.pusty())||(stos.Stos[stos.szczyt-1]=="("))
- {
- stos.Push("+");
- }
- else if((stos.Stos[stos.szczyt-1]=="+")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="-")|| (stos.Stos[stos.szczyt-1]=="/")|| (stos.Stos[stos.szczyt-1]=="x"))
- {
- zdejmij();
- stos.Push("+");
- }
- break;
- }
- case "-":
- {
- if(stos.pusty()||(stos.Stos[stos.szczyt-1]=="("))
- {
- stos.Push("-");
- }
- else if((stos.Stos[stos.szczyt-1]=="+")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="-")|| (stos.Stos[stos.szczyt-1]=="/")|| (stos.Stos[stos.szczyt-1]=="x"))
- {
- zdejmij();
- stos.Push("-");
- }
- break;
- }
- case "/":
- {
- if(stos.pusty())
- {
- stos.Push("/");
- }
- else if((stos.Stos[stos.szczyt-1]=="/")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="x"))
- {
- zdejmij();
- stos.Push("/");
- }
- else stos.Push("/");
- break;
- }
- case "%":
- {
- if(stos.pusty())
- {
- stos.Push("%");
- }
- else if((stos.Stos[stos.szczyt-1]=="/")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="x"))
- {
- zdejmij();
- stos.Push("%");
- }
- else stos.Push("%");
- break;
- }
- case "x":
- {
- if(stos.pusty())
- {
- stos.Push("x");
- }
- else if((stos.Stos[stos.szczyt-1]=="/")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="x"))
- {
- zdejmij();
- stos.Push("x");
- }
- else stos.Push("x");
- break;
- }
- case "=":
- {
- while(!stos.pusty())
- {
- zdejmij();
- }
- vector.add("=");
- break;
- }
- }
- }
- }
- //******************Obliczanie ONP***********************************************************8
- double wartosc;
- int index=0;
- while(vector.get(index)!="=")
- {
- if(czyliczba(vector.get(index)))
- {
- stos.Push(vector.get(index));
- }
- else
- {
- switch(vector.get(index))
- {
- case "+":
- {
- wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) + Double.parseDouble(stos.Stos[stos.szczyt-1]);
- stos.pop();
- stos.pop();
- stos.Push(Double.toString(wartosc));
- break;
- }
- case "-":
- {
- wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) - Double.parseDouble(stos.Stos[stos.szczyt-1]);
- stos.pop();
- stos.pop();
- stos.Push(Double.toString(wartosc));
- break;
- }
- case "x":
- {
- wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) * Double.parseDouble(stos.Stos[stos.szczyt-1]);
- stos.pop();
- stos.pop();
- stos.Push(Double.toString(wartosc));
- break;
- }
- case "/":
- {
- wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) / Double.parseDouble(stos.Stos[stos.szczyt-1]);
- stos.pop();
- stos.pop();
- stos.Push(Double.toString(wartosc));
- break;
- }
- case "%":
- {
- wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) % Double.parseDouble(stos.Stos[stos.szczyt-1]);
- stos.pop();
- stos.pop();
- stos.Push(Double.toString(wartosc));
- break;
- }
- }
- }
- index++;
- }
- System.out.println("Wartosc ONP to: " + stos.Stos[stos.szczyt-1]);
- }
- // Pomocnicze///////////////////////////////////////////////////////////////////////////////////
- private static void zdejmij() {
- vector.add(stos.Stos[stos.szczyt - 1]) ;
- stos.pop();
- }
- private static void nawiasy() {
- while (stos.Stos[stos.szczyt - 1] != "(") {
- vector.add(stos.Stos[stos.szczyt - 1]);
- stos.pop();
- }
- stos.pop();
- }
- private static boolean czyliczba(String s) {
- if (s.matches("\\d+")) {
- return true;
- } else
- return false;
- }
- }
- ////2KLASA
- public class Stos
- {
- public String Stos[];
- public int szczyt;
- Stos()
- {
- Stos = new String[100];
- szczyt = 0;
- }
- void Push(String s)
- {
- if(szczyt<100)
- {
- Stos[szczyt] = s;
- szczyt++;
- }
- }
- void pop()
- {
- szczyt--;
- }
- void wypisz()
- {
- for(int i= szczyt; i > 0; i--)
- {
- System.out.println(Stos[i-1] );
- }
- }
- int rozmiar()
- {
- return szczyt;
- }
- boolean pusty()
- {
- if(szczyt==0)
- {
- return true;
- }
- else return false;
- }
- void wyczysc()
- {
- szczyt=0;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement