Pagini recente » Cod sursa (job #332759) | Cod sursa (job #1646860) | Cod sursa (job #1975657) | Monitorul de evaluare | Cod sursa (job #2628672)
#include <stdio.h>
#include <ctype.h>
char s[100100], *p=s;
int E ();
int F () {
int ans = 0;
if (*p == '(') {
++p;
ans=E();
++p;
}
else
while (isdigit(*p)) {
ans = (ans<<3) + (ans<<1) + *p - '0';
++p;
}
return ans;
}
int T () {
int ans = F();
while (*p == '*' || *p == '/')
if (*p == '*') {
++p;
ans *= F();
}
else {
++p;
ans /= F();
}
return ans;
}
int E () {
int ans = T();
while (*p == '+' || *p == '-')
if (*p == '+') {
++p;
ans += T();
}
else {
++p;
ans -= T();
}
return ans;
}
int main (void) {
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets(s);
printf("%d", E());
return 0;
}