Pagini recente » Cod sursa (job #1589378) | Cod sursa (job #2739460) | Cod sursa (job #1020491) | Cod sursa (job #1826182) | Cod sursa (job #2737861)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("evaluare.in");
ofstream fout("evaluare.out");
string s;
int eval3(int &pz);
int getNum(int &pz){
int rez = 0;
while(pz < (int)s.size() && isdigit(s[pz]))
rez = rez * 10 + s[pz] - '0', ++pz;
return rez;
}
int eval1(int &pz){
int val;
if(s[pz] == '('){
++pz;
val = eval3(pz);
++pz;
}
else val = getNum(pz);
return val;
}
int eval2(int &pz){
int val = eval1(pz);
while(pz < (int)s.size()){
if(s[pz] == '*')
++pz, val *= eval1(pz);
else if(s[pz] == '/')
++pz, val /= eval1(pz);
else break;
}
return val;
}
int eval3(int &pz){
int val = eval2(pz);
while(pz < (int)s.size()){
if(s[pz] == '+')
++pz, val += eval2(pz);
else if(s[pz] == '-')
++pz, val -= eval2(pz);
else break;
}
return val;
}
int main()
{
fin >> s;
int pz = 0;
fout << eval3(pz) << '\n';
return 0;
}