Pagini recente » Cod sursa (job #778039) | Cod sursa (job #1959570) | Cod sursa (job #2990009) | Cod sursa (job #2275347) | Cod sursa (job #2196052)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
using namespace std;
ifstream in("evaluare.in");
ofstream out("evaluare.out");
string s;
int sz, p;
int prior();
int termen();
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 = termen();
while(p < sz && (s[p] == '*' || s[p] == '/')){
if(s[p] == '*'){
p++;
nr *= termen();
} else {
p++;
nr /= termen();
}
}
return nr;
}
int termen(){
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++] - '0';
}
return nr;
}
int main(){
in >> s;
sz = s.size();
out << eval();
return 0;
}