Pagini recente » Cod sursa (job #262559) | Cod sursa (job #537480) | Cod sursa (job #2773059) | Cod sursa (job #461075) | Cod sursa (job #2737786)
#include <bits/stdc++.h>
#define ll long long
#define ld long double
using namespace std;
const ll MOD = 1e9 + 7;
const ll INF = 1e9;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
string s;
int nr = 0;
int eval();
int factor() {
int val = 0;
if (s[nr] == '(') {
nr++;
val = eval();
nr++;
}
else {
while (nr < s.size() && s[nr] >= '0' && s[nr] <= '9') {
val = val * 10 + s[nr] - '0';
nr++;
}
}
return val;
}
int termen () {
int val = factor();
while (nr < s.size() && (s[nr]== '*' || s[nr] == '/')) {
if (s[nr] == '*')
nr++, val *= factor();
else
nr++, val /= factor();
}
return val;
}
int eval () {
int val = termen();
while (nr < s.size() && (s[nr] == '+' || s[nr] == '-')) {
if (s[nr] == '+')
nr++, val += termen();
else
nr++, val += termen();
}
return val;
}
int main()
{
// ios_base::sync_with_stdio(false);
// cin.tie(0); cout.tie(0);
fin >> s;
fout << eval();
return 0;
}