Pagini recente » Cod sursa (job #891964) | Profil VerestiucAndrei | Monitorul de evaluare | Cod sursa (job #754128) | Cod sursa (job #754130)
Cod sursa(job #754130)
#include <cstdio>
#include <cstring>
using namespace std;
#define Dmax 100021
char s[Dmax];
int x;
int e();int f(){int n,R,S,o,T;o=T=R=S=1;while(T){S=1;n=0;if(s[x]=='-')S=-S,++x;else if(s[x]=='+')++x;if(s[x]=='(')x++,n=e();else for(;'0'<=s[x]&&s[x]<='9';n=n*10+s[x++]-48);if(o)R*=S*n;else if(n)R/=n;else R=0;if(s[x]=='/')o=0,x++;else if(s[x]=='*')o=1,x++;else T=0;}return R;}int e(){int S=0;while(s[x]!=')')S+=f();++x;return S;}
/*
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", e() );
}