Pagini recente » Cod sursa (job #1064143) | Cod sursa (job #2359048) | Cod sursa (job #2463052) | Cod sursa (job #584374) | Cod sursa (job #1106639)
#include <cstdio>
const int NMAX = 100005;
char expr[NMAX], *pointer;
int prod_div();
int term();
int eval() {
int r = prod_div();
while( *pointer == '+' || *pointer == '-' ) {
if( *pointer == '+' ) {
pointer++;
r += prod_div();
} else {
pointer++;
r -= prod_div();
}
}
return r;
}
int prod_div() {
int r = term();
while( *pointer == '*' || *pointer == '/' ) {
if( *pointer == '*' ) {
pointer++;
r *= term();
} else {
pointer++;
r /= term();
}
}
return r;
}
int term() {
int r = 0;
if ( *pointer == '(' ) {
pointer++;
r = eval();
pointer++;
} else while( *pointer >= '0' && *pointer <= '9' ) {
r = r * 10 + (*pointer - '0');
pointer++;
}
return r;
}
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s", expr);
pointer = expr;
printf("%d", eval());
return 0;
}