Pagini recente » Cod sursa (job #2536166) | Cod sursa (job #2314544) | Cod sursa (job #130730) | Cod sursa (job #566002) | Cod sursa (job #2375529)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
int step = 0;
string expresie;
int eval();
int factor(){
int r = 0;
if(expresie[step]=='('){
step++;
r = eval();
step++;
}
else{
while(expresie[step]<='9' && expresie[step]>='0'){
r = r*10 + expresie[step] - '0';
step++;
}
}
return r;
}
int termen(){
int r = factor();
while(expresie[step]=='*' || expresie[step]=='/'){
switch(expresie[step]){
case '*':
step++;
r *= factor();
break;
case '/':
step++;
r /= factor();
}
}
return r;
}
int eval(){
int r = termen();
while(expresie[step]=='+' || expresie[step]=='-'){
switch(expresie[step]){
case '+':
step++;
r+=eval();
break;
case '-':
step++;
r-=eval();
break;
}
}
return r;
}
int main()
{
getline(fin, expresie, '\n');
fout<<eval();
}