Pagini recente » Cod sursa (job #1560806) | Cod sursa (job #2109954) | Cod sursa (job #572143) | Cod sursa (job #737721) | Cod sursa (job #2115120)
//recursie ;d
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string s;
int p, sz;
int prior();
int number();
int eval(){
int nr = prior();
while(p < sz && (s[p] == '+' || s[p] == '-')){
if(s[p] == '+'){
p++;
nr += prior();
} else{
p++;
nr -= prior();
}
}
return nr;
}
int prior(){
int nr = number();
while(p < sz && (s[p] == '*' || s[p] == '/')){
if(s[p] == '*'){
p++;
nr *= number();
} else{
p++;
nr /= number();
}
}
return nr;
}
int number(){
int nr = 0;
if(s[p] == '('){
p++;
nr = eval();
p++;
} else{
while(p < sz && s[p] >= '0' && s[p] <= '9'){
nr = 10 * nr + s[p] - 48;
p++;
}
}
return nr;
}
int main(){
in >> s;
sz = s.size();
out << eval();
return 0;
}