Pagini recente » Cod sursa (job #869571) | Cod sursa (job #2777717) | Cod sursa (job #1129934) | Cod sursa (job #3167696) | Cod sursa (job #3282916)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int termen();
int expresie();
int factor();
string s;
int i;
int termen(){
int r = expresie();
while(s[i] == '+' || s[i] == '-'){
if(s[i] == '+'){
++i;
r += expresie();
}
else {
++i;
r -= expresie();
}
}
return r;
}
int expresie(){
int r = factor();
while(s[i] == '*' || s[i] == '/'){
if(s[i] == '*'){
++i;
r *= factor();
}
else {
++i;
r /= factor();
}
}
return r;
}
int factor(){
int r = 0;
if(s[i] == '('){
++i;
r = termen();
++i;
}
else if(isdigit(s[i])){
while(isdigit(s[i])){
r = r * 10 + (s[i] - '0');
++i;
}
}
return r;
}
int main(){
fin >> s;
fout << termen();
}