Pagini recente » Cod sursa (job #2435504) | Cod sursa (job #1852264) | Cod sursa (job #829699) | Rating nicolae dan (danik) | Cod sursa (job #710176)
Cod sursa(job #710176)
#include <cstdio>
char s[100100];
long i;
long termen();
long eval();
long factor () {
long r = 0;
if (s[i] == '(') {
++i;
r = eval();
++i;
} else {
while (s[i] >= '0' && s[i] <= '9') {
r = r*10 + s[i] - '0';
++i;
}
}
return r;
}
long termen() {
long r = factor();
while (s[i] == '*' || s[i] == '/') {
switch (s[i]) {
case '*':
++i;
r *= factor();
break;
case '/':
++i;
r /= factor();
break;
}
}
return r;
}
long eval() {
long r = termen();
while (s[i] == '+' || s[i] == '-') {
switch (s[i]) {
case '+':
++i;
r += termen();
break;
case '-':
++i;
r -= termen();
break;
}
}
return r;
}
int main() {
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s", s);
printf("%ld\n", eval());
return 0;
}