Advertisement
Guest User

Untitled

a guest
Mar 21st, 2018
63
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.85 KB | None | 0 0
  1. import java.util.ArrayList;
  2.  
  3. public class ONP_main {
  4. static Stos stos = new Stos();
  5. static ArrayList<String> vector = new ArrayList<>();
  6.  
  7. public static void main(String[] args)
  8. {
  9. //***************na ONP*****************************//
  10.  
  11. for(int i=0; i<args.length; i++)
  12. {
  13. if(czyliczba(args[i]))
  14. {
  15. vector.add(args[i]);
  16. }
  17. else
  18. {
  19. switch(args[i])
  20. {
  21. case "(":
  22. {
  23. stos.Push("(");
  24. break;
  25. }
  26. case ")":
  27. {
  28. nawiasy();
  29. break;
  30. }
  31. case "+":
  32. {
  33. if((stos.pusty())||(stos.Stos[stos.szczyt-1]=="("))
  34. {
  35. stos.Push("+");
  36. }
  37. 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"))
  38. {
  39. zdejmij();
  40. stos.Push("+");
  41. }
  42. break;
  43. }
  44. case "-":
  45. {
  46. if(stos.pusty()||(stos.Stos[stos.szczyt-1]=="("))
  47. {
  48. stos.Push("-");
  49. }
  50. 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"))
  51. {
  52. zdejmij();
  53. stos.Push("-");
  54. }
  55. break;
  56. }
  57. case "/":
  58. {
  59. if(stos.pusty())
  60. {
  61. stos.Push("/");
  62. }
  63. else if((stos.Stos[stos.szczyt-1]=="/")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="x"))
  64. {
  65. zdejmij();
  66. stos.Push("/");
  67. }
  68. else stos.Push("/");
  69. break;
  70. }
  71. case "%":
  72. {
  73. if(stos.pusty())
  74. {
  75. stos.Push("%");
  76. }
  77. else if((stos.Stos[stos.szczyt-1]=="/")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="x"))
  78. {
  79. zdejmij();
  80. stos.Push("%");
  81. }
  82. else stos.Push("%");
  83. break;
  84. }
  85. case "x":
  86. {
  87. if(stos.pusty())
  88. {
  89. stos.Push("x");
  90. }
  91. else if((stos.Stos[stos.szczyt-1]=="/")||(stos.Stos[stos.szczyt-1]=="%")|| (stos.Stos[stos.szczyt-1]=="x"))
  92. {
  93. zdejmij();
  94. stos.Push("x");
  95. }
  96. else stos.Push("x");
  97. break;
  98. }
  99. case "=":
  100. {
  101. while(!stos.pusty())
  102. {
  103. zdejmij();
  104. }
  105. vector.add("=");
  106. break;
  107. }
  108. }
  109. }
  110. }
  111.  
  112.  
  113. //******************Obliczanie ONP***********************************************************8
  114.  
  115.  
  116. double wartosc;
  117. int index=0;
  118. while(vector.get(index)!="=")
  119. {
  120.  
  121. if(czyliczba(vector.get(index)))
  122. {
  123. stos.Push(vector.get(index));
  124. }
  125. else
  126. {
  127. switch(vector.get(index))
  128. {
  129. case "+":
  130. {
  131. wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) + Double.parseDouble(stos.Stos[stos.szczyt-1]);
  132. stos.pop();
  133. stos.pop();
  134. stos.Push(Double.toString(wartosc));
  135. break;
  136. }
  137. case "-":
  138. {
  139. wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) - Double.parseDouble(stos.Stos[stos.szczyt-1]);
  140. stos.pop();
  141. stos.pop();
  142. stos.Push(Double.toString(wartosc));
  143. break;
  144. }
  145. case "x":
  146. {
  147. wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) * Double.parseDouble(stos.Stos[stos.szczyt-1]);
  148. stos.pop();
  149. stos.pop();
  150. stos.Push(Double.toString(wartosc));
  151. break;
  152. }
  153. case "/":
  154. {
  155. wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) / Double.parseDouble(stos.Stos[stos.szczyt-1]);
  156. stos.pop();
  157. stos.pop();
  158. stos.Push(Double.toString(wartosc));
  159. break;
  160. }
  161. case "%":
  162. {
  163. wartosc= Double.parseDouble(stos.Stos[stos.szczyt-2]) % Double.parseDouble(stos.Stos[stos.szczyt-1]);
  164. stos.pop();
  165. stos.pop();
  166. stos.Push(Double.toString(wartosc));
  167. break;
  168. }
  169.  
  170. }
  171. }
  172. index++;
  173. }
  174. System.out.println("Wartosc ONP to: " + stos.Stos[stos.szczyt-1]);
  175. }
  176. // Pomocnicze///////////////////////////////////////////////////////////////////////////////////
  177. private static void zdejmij() {
  178. vector.add(stos.Stos[stos.szczyt - 1]) ;
  179. stos.pop();
  180. }
  181.  
  182. private static void nawiasy() {
  183. while (stos.Stos[stos.szczyt - 1] != "(") {
  184. vector.add(stos.Stos[stos.szczyt - 1]);
  185. stos.pop();
  186. }
  187. stos.pop();
  188. }
  189.  
  190. private static boolean czyliczba(String s) {
  191. if (s.matches("\\d+")) {
  192. return true;
  193. } else
  194. return false;
  195. }
  196. }
  197. ////2KLASA
  198.  
  199.  
  200. public class Stos
  201. {
  202. public String Stos[];
  203. public int szczyt;
  204. Stos()
  205. {
  206. Stos = new String[100];
  207. szczyt = 0;
  208. }
  209. void Push(String s)
  210. {
  211. if(szczyt<100)
  212. {
  213. Stos[szczyt] = s;
  214. szczyt++;
  215. }
  216. }
  217. void pop()
  218. {
  219. szczyt--;
  220. }
  221. void wypisz()
  222. {
  223. for(int i= szczyt; i > 0; i--)
  224. {
  225. System.out.println(Stos[i-1] );
  226. }
  227. }
  228. int rozmiar()
  229. {
  230. return szczyt;
  231. }
  232. boolean pusty()
  233. {
  234. if(szczyt==0)
  235. {
  236. return true;
  237. }
  238. else return false;
  239. }
  240. void wyczysc()
  241. {
  242. szczyt=0;
  243. }
  244. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement