Pagini recente » Cod sursa (job #545030) | Cod sursa (job #909600) | Cod sursa (job #1447081) | Cod sursa (job #254402) | Cod sursa (job #538493)
Cod sursa(job #538493)
#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, semn = 1;
if (*p == '(')
p++, sol = evaluare (), p++;
else {
if (*p == '-') p++, semn = -1;
while (*p >= '0' && *p <= '9')
sol = sol * 10 + (*p - '0'), p++;
}
return sol * semn;
}