Pagini recente » Cod sursa (job #1057056) | Cod sursa (job #137774) | Cod sursa (job #530031) | Monitorul de evaluare | Cod sursa (job #754129)
Cod sursa(job #754129)
#include <cstdio>
#include <cstring>
using namespace std;
#define Dmax 100021
char s[Dmax];
int Act;
int Eval();
int Fact()
{
int Nbr,Sol,Sum;
bool Inm,TF;
Inm=TF=1;
Sol=Sum=1;
while ( TF )
{
Sum=1;
Nbr=0;
if ( s[Act]=='-' )
{
Sum*=-1;
++Act;
}
else
if ( s[Act]=='+' )
++Act;
if ( s[Act]=='(' )
{
Act++;
Nbr=Eval();
}
else
for (;'0'<=s[Act] && s[Act]<='9' ; Nbr=Nbr*10+s[Act]-48 ,++Act );
if ( Inm==1 )
Sol*=Sum*Nbr;
else
if ( Nbr )
Sol/=Nbr;
else
Sol=0;
if ( s[Act]=='/' )
{
Inm=0;
Act++;
}
else
if ( s[Act]=='*' )
{
Inm=1;
Act++;
}
else
TF=0;
}
return Sol;
}
int Eval()
{
int All=0;
while ( s[Act]!=')' )
All+=Fact();
++Act;
return All;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",s);
s[strlen(s)]=')';
printf("%d", Eval() );
}