Pagini recente » Cod sursa (job #401408) | Cod sursa (job #2651359) | Cod sursa (job #2438349) | Cod sursa (job #1503180) | Cod sursa (job #2903140)
#include <fstream>
using namespace std;
int factor(),termen();
string EVAL;
int poz=0;
int evaluare()
{
int R=termen();
while(EVAL[poz]=='-' || EVAL[poz]=='+')
{
if(EVAL[poz]=='-')
{
poz++;
R-=termen();
break;
}
if(EVAL[poz]=='+')
{
poz++;
R+=termen();
break;
}
}
return R;
}
int termen()
{
int F=factor();
while(EVAL[poz]=='*' || EVAL[poz]=='/')
{
if(EVAL[poz]=='*')
{
poz++;
F*=factor();
break;
}
if(EVAL[poz]=='/')
{
poz++;
F/=factor();
break;
}
}
return F;
}
int factor()
{
long long r=0;
if(EVAL[poz]=='(')
{
poz++;
r=evaluare();
poz++;
}
else
{
while(EVAL[poz]>='0' && EVAL[poz]<='9')
{
r=r*10+EVAL[poz]-'0';
poz++;
}
}
return r;
}
int main()
{
ifstream cin("evaluare.in");
ofstream cout("evaluare.out");
cin>>EVAL;
EVAL+='$';
cout<<evaluare();
return 0;
}