Pagini recente » Cod sursa (job #472462) | Cod sursa (job #3264062) | Cod sursa (job #1651400) | Cod sursa (job #2599556) | Cod sursa (job #538497)
Cod sursa(job #538497)
#include <cstdio>
#define NMAX 100050
char S[NMAX], *p;
int evaluare (), termen (), factor ();
int main () {
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
scanf ("%s", S); p = S;
printf ("%d", evaluare ());
return 0;
}
int evaluare () {
int sol = termen ();
while (*p == '+' || *p == '-') {
if (*p == '+')
p++, sol += termen ();
else
p++, sol -= termen ();
}
return sol;
}
int termen () {
int sol = factor ();
while (*p == '*' || *p == '/') {
if (*p == '*')
p++, sol *= factor ();
else
p++, sol /= factor ();
}
return sol;
}
int factor () {
int sol = 0;
if (*p == '(')
p++, sol = evaluare (), p++;
else {
while (*p >= '0' && *p <= '9')
sol = sol * 10 + (*p - '0'), p++;
}
return sol;
}