Pagini recente » Cod sursa (job #2718867) | Cod sursa (job #2060887) | Cod sursa (job #2880750) | Cod sursa (job #2190742) | Cod sursa (job #1105408)
#include <iostream>
#include <cstring>
#include <cstdio>
#define Nmax 100010
#define IsCif(x) (x>='0' && x<='9')
using namespace std;
char S[Nmax];
int i;
int Evaluare();
int Factor();
int Termen();
int Evaluare()
{
int r=Termen();
while(S[i]=='+' || S[i]=='-')
{
if(S[i]=='+')
{
++i;
r+=Termen();
}
else
{
++i;
r-=Termen();
}
}
return r;
}
int Termen()
{
int r=Factor();
while(S[i]=='*' || S[i]=='/')
{
if(S[i]=='*')
{
++i;
r*=Factor();
}
else
{
++i;
r/=Factor();
}
}
return r;
}
int Factor()
{
int r=0;
if(S[i]=='(')
{
++i;
r=Evaluare();
++i;
}
else
{
for(;IsCif(S[i]);++i)
r=r*10+S[i]-'0';
}
return r;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
gets(S);
printf("%d",Evaluare());
return 0;
}