Pagini recente » Salut cf | Cod sursa (job #2162228) | butoaie | Istoria paginii utilizator/puica2018 | Cod sursa (job #2870070)
#include <bits/stdc++.h>
using namespace std;
string s;
int pos;
int eval();
int getOp1();
int getOp2(int);
int getValues() {
int value = 0;
if (s[pos] == '(') {
++pos;
value = eval();
++pos;
} else {
while (isdigit(s[pos])) {
value = value * 10 + s[pos] - '0';
++pos;
}
}
return value;
}
int getOp1() {
int value = getValues();
while (s[pos] == '*' || s[pos] == '/') {
if (s[pos] == '*') {
++pos;
value *= getValues();
} else {
++pos;
value /= getValues();
}
}
return value;
}
int getOp2(int value) {
while (s[pos] == '+' || s[pos] == '-') {
if (s[pos] == '+') {
++pos;
value += getOp1();
} else {
++pos;
value -= getOp1();
}
}
return value;
}
int eval() {
int value1 = getOp1();
int value2 = getOp2(value1);
return value2;
}
int main(){
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin >> s;
cout << eval();
return 0;
}