Pagini recente » Cod sursa (job #679919) | Cod sursa (job #1216514) | Cod sursa (job #1583045) | Cod sursa (job #706739) | Cod sursa (job #1971799)
#include<string>
#include<fstream>
using namespace std;
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
int Expr(string ec, int &i);
int Factor(string ec, int &i);
int Eval(string ec, int &i)
{
int nr = Expr(ec, i);
while(ec[i] == '+' || ec[i] == '-')
{
if(ec[i] == '+')
{
++i;
nr += Expr(ec, i);
}
else
{
++i;
nr -= Expr(ec, i);
}
}
return nr;
}
int Expr(string ec, int &i)
{
int nr = Factor(ec, i);
while(ec[i] == '*' || ec[i] == '/')
{
if(ec[i] == '*')
{
++i;
nr *= Factor(ec, i);
}
else
{
++i;
nr /= Factor(ec, i);
}
}
return nr;
}
int Factor(string ec, int &i)
{
int nr = 0;
if(ec[i] == '(')
{
++i;
nr = Eval(ec, i);
++i;
}
else
{
while(ec[i] >= '0' && ec[i] <= '9')
{
nr = nr * 10 + ec[i] - '0';
++i;
}
}
return nr;
}
int main(){
string ec;
cin >> ec;
int i = 0;
cout << Eval(ec, i);
cin.close();
cout.close();
return 0;
}