Pagini recente » Cod sursa (job #2487308) | Cod sursa (job #2916559) | Cod sursa (job #1857635) | Cod sursa (job #2353237) | Cod sursa (job #2884015)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
const int INF = 1e9;
const int MOD = 1e9 + 7;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
string s;
int p;
int eval();
int factor () {
int nr = 0;
if (isdigit(s[p])) {
while (p < s.size() && isdigit(s[p]))
nr = nr * 10 + s[p++] - '0';
}
else if (s[p] == '(') {
p++;
nr = eval();
p++;
}
return nr;
}
int termen () {
int sum = factor();
while (p < s.size() && (s[p] == '*' || s[p] == '/')) {
p++;
if (s[p - 1] == '*')
sum *= factor();
else
sum /= factor();
}
return sum;
}
int eval () {
int sum = termen();
while (p < s.size() && (s[p] == '+' || s[p] == '-')) {
p++;
if (s[p - 1] == '+')
sum += termen();
else
sum -= termen();
}
return sum;
}
int main ()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
fin >> s;
fout << eval();
return 0;
}