Pagini recente » Cod sursa (job #1665641) | Cod sursa (job #18348) | Cod sursa (job #2515030) | Cod sursa (job #1730166) | Cod sursa (job #2324495)
#include <cstdio>
using namespace std;
const int MAX = 100001;
char S[MAX], *p = S;
int termen();
int factor();
int eval() {
int r = termen();
while(*p == '-' || *p == '+') {
if(*p == '-')
++p, r -= termen();
else ++p, r += termen();
}
return r;
}
int termen() {
int r = factor();
while(*p == '*' || *p == '/') {
if(*p == '*')
++p, r *= termen();
else ++p, r /= termen();
}
return r;
}
int factor() {
int r = 0;
if(*p == '(') {
++p;
r = eval();
++p;
} else
while(*p >= '0' && *p <= '9') {
r = r*10 + *p - '0';
++p;
}
return r;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
gets(S);
printf("%i", eval());
return 0;
}