Pagini recente » Cod sursa (job #674578) | Cod sursa (job #2245717) | Cod sursa (job #41634) | Cod sursa (job #2986365) | Cod sursa (job #2903146)
#include <fstream>
using namespace std;
long long factor(),termen();
string EVAL;
int poz=0;
long long evaluare()
{
long long R=termen();
while(EVAL[poz]=='+' || EVAL[poz]=='-')
{
if(EVAL[poz]=='+')
{
poz++;
R+=termen();
continue;
}
else if(EVAL[poz]=='-')
{
poz++;
R-=termen();
continue;
}
}
return R;
}
long long termen()
{
long long R=factor();
while(EVAL[poz]=='*' || EVAL[poz]=='/')
{
if(EVAL[poz]=='*')
{
poz++;
R*=factor();
continue;
}
else if(EVAL[poz]=='/')
{
poz++;
R/=factor();
continue;
}
}
return R;
}
long long 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;
}