Pagini recente » Cod sursa (job #2734860) | Cod sursa (job #2598552) | Cod sursa (job #2125113) | Cod sursa (job #743938) | Cod sursa (job #3215659)
#include <iostream>
#include <cstring>
using namespace std;
int i;
char c[100005];
int eval();
int factor();
int termen();
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
cin.tie(nullptr)->sync_with_stdio(0);
cin >> c;
cout << eval();
return 0;
}
int eval() {
int r = termen();
while(c[i] == '+' || c[i] == '-') {
if(c[i] == '+') {
i++;
r += termen();
}
else {
i++;
r -= termen();
}
}
return r;
}
int termen() {
int r = factor();
while(c[i] == '*' || c[i] == '/') {
if(c[i] == '*') {
i++;
r *= factor();
}
else {
i++;
r /= factor();
}
}
return r;
}
int factor() {
int r = 0;
if(c[i] == '(') {
i++;
r = eval();
i++;
}
else {
while(isdigit(c[i])) {
r = r * 10 + c[i] - '0';
i++;
}
}
return r;
}