Pagini recente » Cod sursa (job #927162) | Cod sursa (job #223183) | Cod sursa (job #3236519) | Cod sursa (job #964423) | Cod sursa (job #2217298)
/**
* Worg
*/
#include <cstdio>
FILE *fin = freopen("evaluare.in", "r", stdin); FILE *fout = freopen("evaluare.out", "w", stdout);
const int MAX_LENGTH = 1e5 + 5;
/*-------- Data --------*/
char s[MAX_LENGTH];
char *cursor;
/*-------- --------*/
int EvalA();
int EvalB();
int EvalC();
int EvalA() {
int ret = EvalB();
while(*cursor == '+' || *cursor == '-') {
char sign = *cursor;
cursor++; // Go over the sign
if(sign == '+') {
ret += EvalB();
} else {
ret -= EvalB();
}
}
return ret;
}
int EvalB() {
int ret = EvalC();
while(*cursor == '*' || *cursor == '/') {
char sign = *cursor;
cursor++; // Go over the sign
if(sign == '*') {
ret *= EvalC();
} else {
ret /= EvalC();
}
}
return ret;
}
int EvalC() {
if(*cursor == '(') {
cursor++; int ret = EvalA(); cursor++;
return ret;
} else {
int ret = 0;
while('0' <= *cursor && *cursor <= '9') {
ret = ret * 10 + *cursor - '0';
cursor++;
}
return ret;
}
}
int main() {
scanf("%s", s); cursor = s;
printf("%d\n", EvalA());
return 0;
}