Pagini recente » Cod sursa (job #2698792) | Cod sursa (job #2253102) | Cod sursa (job #2974305) | Cod sursa (job #2529470) | Cod sursa (job #1718787)
#include<stdio.h>
#define MAXLEN 100000
char line[MAXLEN];
char *p;
long termen();
long factor();
long eval();
long eval() {
long r = termen();
while(*p == '+' || *p == '-') {
switch(*p){
case '+':
++p;
r += termen();
break;
case '-':
++p;
r -= termen();
break;
}
}
return r;
}
long termen() {
long r = factor();
while(*p == '*' || *p == '/') {
switch(*p) {
case '*':
++p;
r *= factor();
break;
case '/':
++p;
r /= factor();
break;
}
}
return r;
}
long factor() {
long 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);
fgets(line, MAXLEN, stdin);
p = line;
fprintf(stdout, "%ld", eval());
return 0;
}