Advertisement
Mitrezzz

[АПС] Лаб 3 - Аритметички израз

Nov 9th, 2020
766
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.91 KB | None | 0 0
  1. Даден е некој аритметички израз. Аритметичкиот израз е во облик (A+B) или (A-B) каде што А и B истовремено се други аритметички изрази или цифри од 0-9. Потребно е да го евалуирате дадениот израз.
  2.  
  3. Име на класата (Java): ArithmeticExpression
  4.  
  5. Влез:
  6. (1+2)
  7. Излез:
  8. 3
  9.  
  10. Влез:
  11. (((1+9)-((7+7)-(3+2)))+(2+4))
  12. Излез:
  13. 7
  14.  
  15.  
  16. import java.io.BufferedReader;
  17. import java.io.InputStreamReader;
  18.  
  19. public class ArithmeticExpression {
  20.     // funkcija za presmetuvanje na izrazot pocnuvajki
  21.     // od indeks l, zavrsuvajki vo indeks r
  22.     static int presmetaj(char c[], int l, int r) {
  23.         if(r-l+1 == 5) {
  24.             if(c[l+2] == '+')
  25.                 return ((c[l+1] - '0') + (c[l+3] - '0'));
  26.             else if(c[l+2] == '-')
  27.                 return ((c[l+1] - '0') - (c[l+3] - '0'));
  28.         }
  29.        
  30.         int opened = 0, index = 0;
  31.        
  32.         for(int i = l; i < r; i++) {
  33.             if(c[i] == '(') opened++;
  34.             if(c[i] == ')') opened--;
  35.             if((c[i] == '+') || (c[i] == '-')) {
  36.                 if(opened == 1) {
  37.                     index = i;
  38.                     break;
  39.                 }
  40.             }
  41.         }
  42.        
  43.         if(c[index] == '+')
  44.             return presmetaj(c, l+1, index-1) + presmetaj(c, index+1, r-1);
  45.         else return presmetaj(c, l+1, index-1) - presmetaj(c, index+1, r-1);
  46.     }
  47.    
  48.     public static void main(String[] args) throws Exception {
  49.         int i,j,k;
  50.        
  51.         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
  52.        
  53.         String expression = br.readLine();
  54.         char exp[] = expression.toCharArray();
  55.        
  56.         int rez = presmetaj(exp, 0, exp.length-1);
  57.         System.out.println(rez);
  58.        
  59.         br.close();  
  60.     }
  61. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement