Pagini recente » Cod sursa (job #749158) | Cod sursa (job #473233) | Cod sursa (job #1120228) | Cod sursa (job #1127907) | Cod sursa (job #1617359)
#include <fstream>
#include <string>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
string str;
int curr;
int priority1();
int priority2();
int priority3();
int priority3() {
int nr = priority2();
while(str[curr] == '+' or str[curr] == '-') {
if(str[curr] == '+') {
++curr;
nr += priority2();
}
else {
++curr;
nr -= priority2();
}
}
return nr;
}
int priority2() {
int nr = priority1();
while(str[curr] == '*' or str[curr] == '/') {
if(str[curr] == '*') {
++curr;
nr *= priority1();
}
else {
++curr;
nr /= priority1();
}
}
return nr;
}
int priority1() {
int nr = 0;
if(str[curr] == '(') {
++curr;
nr = priority3();
++curr;
}
else {
while(isdigit(str[curr])) {
nr *= 10;
nr += str[curr] - '0';
++curr;
}
}
return nr;
}
int main() {
cin >> str;
cout << priority3() << '\n';
return 0;
}