Pagini recente » Cod sursa (job #475379) | Cod sursa (job #2663902) | Cod sursa (job #297676) | Cod sursa (job #2374452) | Cod sursa (job #2652089)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
ll p;
ll termen();
ll factor();
ll eval() {
ll r = termen();
while (s[p] == '+' || s[p] == '-') {
if (s[p] == '+') {
++p;
r += termen();
}
else if (s[p] == '-') {
++p;
r -= termen();
}
}
return r;
}
ll termen() {
ll r = factor();
while (s[p] == '*' || s[p] == '/') {
if (s[p] == '*') {
++p;
r *= factor();
}
else if (s[p] == '/') {
++p;
r /= factor();
}
}
return r;
}
ll factor() {
ll r = 0;
if (s[p] == '(' || s[p] == ')') {
++p;
r = eval();
++p;
}
else
while (s[p] >= '0' && s[p] <= '9') {
r = r * 10 + (s[p] - '0');
++p;
}
return r;
}
int main() {
getline(fin, s);
fout << eval();
return 0;
}