Pagini recente » Cod sursa (job #2285254) | Cod sursa (job #2862042) | Cod sursa (job #2302772) | Cod sursa (job #2517360) | Cod sursa (job #2736348)
#include <bits/stdc++.h>
using namespace std;
#define debug(x) cerr << #x << " = " << x << "\n";
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string s;
int p;
int fact();
int term();
int eval();
int fact() {
int ret = 0, sign = 1;
if (s[p] == '-') {
p++;
sign = -1;
}
if (s[p] == '(') {
p++;
ret = eval();
p++;
} else {
while (s[p] >= '0' && s[p] <= '9') {
ret = 10 * ret + s[p] - '0';
p++;
}
}
return ret * sign;
}
int term() {
int ret = fact();
while (s[p] == '*' || s[p] == '/') {
if (s[p] == '*') {
p++;
ret *= fact();
} else {
p++;
ret /= fact();
}
}
return ret;
}
int eval() {
int ret = term();
while (s[p] == '+' || s[p] == '-') {
if (s[p] == '+') {
p++;
ret += term();
} else {
p++;
ret -= term();
}
}
return ret;
}
int main() {
in >> s;
out << eval() << "\n";
return 0;
}