Pagini recente » Cod sursa (job #1639695) | Cod sursa (job #2304872) | Cod sursa (job #1413861) | Cod sursa (job #1631153) | Cod sursa (job #2701529)
#include <bits/stdc++.h>
using namespace std;
const int DIM = 1e5 + 5;
int calcul();
int getNumber();
int p = 0, n;
char s[DIM];
int calcul() {
if (p > n) return 0;
int val = getNumber();
while (p <= n) {
if (s[p] == '+' || s[p] == '-') {
int sgn = 1;
if (s[p] == '-') sgn = -1;
++p;
val = val + sgn * calcul();
} else if (s[p] == '*' || s[p] == '/') {
if (s[p] == '*') ++p, val = val * getNumber();
else if (s[p] == '/') ++p, val = val / getNumber();
} else break ;
}
return val;
}
int parsare() {
int x = 0;
while (p <= n && s[p] >= '0' && s[p] <= '9') {
x = x * 10 + (s[p] - '0');
++p;
}
return x;
}
int getNumber() {
if (p > n) return 0;
if (s[p] >= '0' && s[p] <= '9') return parsare();
if (s[p] == '(') {
++p;
int x = calcul();
++p;
return x;
}
}
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s", s);
n = strlen(s) - 1;
int ans = calcul();
printf("%d", ans);
return 0;
}