Advertisement
Kame3

Аритметички израз lab3.1

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