Pagini recente » Cod sursa (job #3188572) | Cod sursa (job #2954335) | Cod sursa (job #3256461) | Cod sursa (job #1816450) | Cod sursa (job #2659243)
#include <cstdio>
#include <cstring>
#include <cctype>
const int LMAX = 100005;
char input[LMAX];
char *p = input;
int eval_term();
int eval_factor();
int eval_exp() {
int result = eval_term();
while (strchr("+-", *p)) {
if (*p == '+')
p++, result += eval_term();
else
p++, result -= eval_term();
}
return result;
}
int eval_term() {
int result = eval_factor();
while (strchr("*/", *p)) {
if (*p == '*')
p++, result *= eval_term();
else
p++, result /= eval_term();
}
return result;
}
int eval_factor() {
int result = 0;
if (*p == '(')
p++, result = eval_exp(), p++;
else
while (isdigit(*p))
result = result * 10 + (*p - '0'), p++;
return result;
}
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
fgets(input, LMAX, stdin);
printf("%d\n", eval_exp());
return 0;
}