Pagini recente » Cod sursa (job #716080) | Cod sursa (job #2452281) | Cod sursa (job #2564647) | Cod sursa (job #2495829) | Cod sursa (job #3302749)
#include <iostream>
#include <fstream>
using namespace std;
#ifdef LOCAL
#define fin cin
#define fout cout
#else
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
#endif
#define int long long int
string s;
int i=0;
int eval();
int fact() {
int rez = 0;
if (s[i] == '(') {
i++;
rez = eval();
i++;
return rez;
}
while (i < s.size() && s[i] >= '0' && s[i] <= '9') {
rez = rez * 10 + s[i] - '0';
i++;
}
return rez;
}
int term() {
int rez = fact();
while (i < s.size() && (s[i] == '*' || s[i] == '/')) {
if (s[i] == '*') {
i++;
rez *= fact();
}
else {
i++;
rez /= fact();
}
}
return rez;
}
int eval() {
int rez = term();
while (i < s.size() && (s[i] == '+' || s[i] == '-')) {
if (s[i] == '+') {
i++;
rez += term();
}
else {
i++;
rez -= term();
}
}
return rez;
}
int32_t main() {
fin >> s;
fout << eval();
}