Pagini recente » Cod sursa (job #1899997) | Cod sursa (job #63350) | Cod sursa (job #1839863) | Cod sursa (job #1171268) | Cod sursa (job #2791446)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("evaluare.in");
ofstream fout ("evaluare.out");
string s;
/// X -> cif | X*10 + cif
int X(int &p){
int answer=0;
while('0' <= s[p] && s[p] <= '9')
answer = answer*10 + (s[p] - '0'), p++;
return answer;
}
int E(int &p);
/// F -> X | ( E )
int F(int &p){
int answer;
if(s[p] == '('){
p++; /// scap de '('
answer = E(p);
p++; /// scap de ')'
}else
answer = X(p);
return answer;
}
/// T -> F | F */ X
int T(int &p){
int answer=F(p);
while(s[p] == '*' || s[p] == '/')
if(s[p] == '*')
p++, answer *= F(p);
else
p++, answer /= F(p);
return answer;
}
/// E -> T | E +- T
int E(int &p){
int answer = T(p);
while(s[p] == '+' || s[p] == '-')
if(s[p] == '+')
p++, answer += T(p);
else
p++, answer -= T(p);
return answer;
}
int main (){
fin>>s; int p=0;
fout<<E(p);
return 0;
}