Advertisement
Guest User

Untitled

a guest
Nov 18th, 2018
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.20 KB | None | 0 0
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.util.LinkedList;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6.  
  7. public class ArithmeticExpression {
  8.  
  9. // funkcija za presmetuvanje na izrazot pocnuvajki
  10. // od indeks l, zavrsuvajki vo indeks r
  11.  
  12. static int findSign(char c[], int l, int r)
  13. {
  14. LinkedList<Character> stack = new LinkedList<Character>();
  15. for(int i = l; i < r;i++)
  16. {
  17. switch (c[i]) {
  18. case '(':
  19. stack.addLast(c[i]);
  20. break;
  21. case '+':
  22. case'-':
  23. if(stack.size() == 1)
  24. return i;
  25. break;
  26. case ')':
  27. stack.removeLast();
  28. break;
  29. }
  30. }
  31. return 0;
  32. }
  33. static String cast(char c[], int l, int r)
  34. {
  35. String s = new String(c,l, r-l);
  36. return s;
  37. }
  38. static int presmetaj(char c[], int l, int r) {
  39.  
  40. int a, b, znak;
  41. String cs = new String(c);
  42. if(l ==r)
  43. return Integer.parseInt( String.valueOf(c[l]) );
  44.  
  45. znak = findSign(c, l,r);
  46. //System.out.println(znak + " " + c[znak]);
  47.  
  48. try {
  49. a= Integer.parseInt( cast(c, l+1,znak));
  50. }catch (NumberFormatException e)
  51. {
  52. a = presmetaj(c, l+1, znak-1);
  53. }
  54.  
  55. try {
  56. b= Integer.parseInt(cast(c, znak+1, r-1), 10);
  57. }catch (NumberFormatException e)
  58. {
  59. b = presmetaj(c, znak+1,r-1);
  60. }
  61.  
  62. switch (c[znak])
  63. {
  64. case '+':
  65. return a + b;
  66. case '-':
  67. return a-b;
  68. }
  69.  
  70. return 0;
  71. }
  72.  
  73. public static void main(String[] args) throws Exception {
  74. int i,j,k;
  75.  
  76. BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  77.  
  78. String expression = br.readLine();
  79. char exp[] = expression.toCharArray();
  80.  
  81. int rez = presmetaj(exp, 0, exp.length-1);
  82. System.out.println(rez);
  83.  
  84. br.close();
  85.  
  86. }
  87.  
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement