Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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 evaluirajEdnostavenIzraz(String exp)
- {
- int operacija = '+';
- int rezultat = 0;
- int pc = exp.charAt(0);
- for (int i = 0; i < exp.length(); i++)
- {
- char c = exp.charAt(i);
- if (Character.isDigit(pc)&&(c == '+' || c == '-'))
- {
- operacija = c;
- String a = exp.substring(0, i);
- String b = exp.substring(i+1, exp.length());
- //System.out.println("A: " + a + ", B: " + b);
- if (operacija == '+')
- rezultat = Integer.parseInt(a) + Integer.parseInt(b);
- else
- rezultat = Integer.parseInt(a) - Integer.parseInt(b);
- //System.out.printf("%s %c %s = %d\n", a, operacija, b, rezultat);
- break;
- }
- pc = c;
- }
- return rezultat;
- }
- static int presmetaj(char c[], int l, int r) {
- char pc = c[0];
- boolean lfmp = false; // looking for matching parenthesis
- int p = 0, k = 0;
- String exp = String.copyValueOf(c);
- String orig = String.copyValueOf(c);
- pc = orig.charAt(0);
- for (int i = 0; i <= orig.length()-1; i++)
- {
- if (pc == '(' )
- {
- lfmp = true;
- p = i;
- }
- else if (pc == ')' && lfmp)
- {
- k = i;
- //System.out.print("Izraz: \n");
- String izraz = orig.substring(p, k-1);
- int v = evaluirajEdnostavenIzraz(izraz);
- //System.out.println("Izraz: " + izraz);
- String pat = "\\Q(" + izraz + ")\\E";
- exp = exp.replaceAll(pat, Integer.toString(v));
- //System.out.printf("Replacing %s with %d\n", izraz, v);
- lfmp = false;
- }
- if (i == orig.length()-1)
- {
- //System.out.printf("Orig: %s\nParsed: %s\n", orig, exp);
- if (orig == exp || orig.length() == 5)
- {
- orig = orig.replace("(", "");
- orig = orig.replace(")", "");
- int rez = evaluirajEdnostavenIzraz(orig);
- //System.out.printf("Rezultat: %d\n", rez);
- return rez;
- }
- i = 0;
- orig = exp;
- }
- pc = orig.charAt(i);
- }
- //System.out.println(exp);
- return 0;
- }
- public static void main(String[] args) throws Exception {
- 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