Pagini recente » Cod sursa (job #86074) | Cod sursa (job #2499149) | Cod sursa (job #2658545) | Cod sursa (job #101871) | Cod sursa (job #673080)
Cod sursa(job #673080)
#include <cstdio>
#include <iostream>
using namespace std;
string S;
int poz;
int f1();
int f2();
int f3();
int f1() {
// fprintf(stderr, "1 %d\n", poz);
int rez = f2();
while (S[poz] == '+' || S[poz] == '-') {
poz++;
if (S[poz - 1] == '+') rez += f2();
else rez -= f2();
}
return rez;
}
int f2() {
// fprintf(stderr, "2 %d\n", poz);
int rez = f3();
while (S[poz] == '*' || S[poz] == '/') {
poz++;
if (S[poz - 1] == '*') rez *= f3();
else rez /= f3();
}
return rez;
}
int f3() {
// fprintf(stderr, "3 %d\n", poz);
int rez = 0;
if (S[poz] == '(') {
poz++;
rez = f1();
poz++;
return rez;
}
while (S[poz] >= '0' && S[poz] <= '9') {
rez = rez * 10 + S[poz] - '0';
poz++;
}
return rez;
}
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
cin >> S;
cout << f1();
return 0;
}