Pagini recente » Cod sursa (job #1245975) | Cod sursa (job #3124768) | Cod sursa (job #123389) | Cod sursa (job #632947) | Cod sursa (job #1625850)
#include <cstdio>
#include <cstring>
char s[100010];
int termen ();
int factor ();
int numar ();
int poz;
int expresie () {
int ANS = termen ();
while (s[poz] == '+' || s[poz] == '-') {
if (s[poz] == '+') {
poz++;
ANS += termen ();
}
else {
poz++;
ANS -= termen ();
}
}
return ANS;
}
int termen () {
int ANS = factor ();
while (s[poz] == '*' || s[poz] == '/') {
if (s[poz] == '*') {
poz++;
ANS *= factor();
}
else {
poz++;
ANS /= factor();
}
}
return ANS;
}
int factor () {
int ANS;
if (s[poz] == '(') {
poz++;
ANS = expresie ();
poz ++;
}
else {
ANS = numar ();
}
return ANS;
}
int numar () {
int ANS = 0;
while (s[poz] >= '0' && s[poz] <= '9') {
ANS = ANS * 10 + ((s[poz]) - '0');
poz++;
}
return ANS;
}
int main () {
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
scanf ("%s", s);
printf ("%d", expresie ());
return 0;
}