Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- Аритметички израз Problem 1 (1 / 3)
- Даден е некој аритметички израз. Аритметичкиот израз е во облик (A+B) или (A-B) каде што А и B истовремено се други аритметички изрази или цифри од 0-9. Потребно е да го евалуирате дадениот израз.
- Име на класата (Java): ArithmeticExpression
- */
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- public class ArithmeticExpression {
- // funkcija za presmetuvanje na izrazot pocnuvajki
- // od indeks l, zavrsuvajki vo indeks r
- static int presmetaj(char c[], int l, int r) {
- if (l==r)
- return Character.getNumericValue(c[l]);
- else if ((r-l)==4){
- switch (c[l+2]){
- case '+':
- return Character.getNumericValue(c[l+1])+Character.getNumericValue(c[l+3]);
- case '-':
- return Character.getNumericValue(c[l+1])-Character.getNumericValue(c[l+3]);
- }
- }
- else{
- int open = 0;
- int closed=0;
- for(int i=l;i<=r;i++){
- if(c[i]=='+' || c[i]=='-') {
- if (open == (closed + 1)) {
- switch (c[i]) {
- case '+':
- return presmetaj(c,l+1,i-1)+presmetaj(c,i+1,r-1);
- case '-':
- return presmetaj(c,l+1,i-1)-presmetaj(c,i+1,r-1);
- }
- }
- else continue;
- }
- else if(c[i]=='(') open++;
- else if(c[i]==')') closed++;
- }
- }
- return -1;
- }
- public static void main(String[] args) throws Exception {
- int i,j,k;
- BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
- String expression = br.readLine();
- char exp[] = expression.toCharArray();
- int rez = presmetaj(exp, 0, exp.length-1);
- System.out.println(rez);
- br.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement