Advertisement
nikolaliltek

LAB3 Aritmeticki izraz

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