Pagini recente » Cod sursa (job #744413) | Cod sursa (job #3286450) | Cod sursa (job #2202257) | Cod sursa (job #3258650) | Cod sursa (job #3293412)
#include <iostream>
using namespace std;
string expr;
int p;
int eva();
int termen();
int factor();
int eva() {
int ans = termen();
while (expr[p] == '+' || expr[p] == '-') {
int coef = expr[p++] == '+' ? 1 : -1;
ans += coef * termen();
}
return ans;
}
int termen() {
int ans = factor();
while (expr[p] == '*' || expr[p] == '/') {
if (expr[p++] == '*') {
ans *= factor();
} else
ans /= factor();
}
return ans;
}
int factor() {
if (expr[p] == '(') {
p++;
const int rez = eva();
p++;
return rez;
}
int ans = 0;
while (expr[p] >= '0' && expr[p] <= '9') {
ans = ans * 10 + expr[p++] - '0';
}
return ans;
}
int main() {
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
cin >> expr;
p = 0;
cout << eva();
}