Mai intai trebuie sa te autentifici.
Cod sursa(job #1038897)
Utilizator | Data | 22 noiembrie 2013 08:51:09 | |
---|---|---|---|
Problema | Evaluarea unei expresii | Scor | 10 |
Compilator | cpp | Status | done |
Runda | Arhiva educationala | Marime | 0.88 kb |
/*
Keep It Simple!
*/
#include<stdio.h>
char s[100002],*p=s;
long solve();
long multi();
long sub()
{
long ret = 0;
if( *p == '(')
{
++p;
ret=solve();
++p;
}
else {
while( *p >='0' && *p<='9')
{
ret=ret*10+(*p-'0');
++p;
}
}
return ret;
}
long multi()
{
long ret = sub();
while ( *p == '*' || *p == '/' )
{
if( *p == '*' )
{
++p;
ret *= sub();
break;
}
if(*p == '/' )
{
++p;
ret /= sub();
break;
}
}
return ret;
}
long solve()
{
long ret = multi();
while ( *p == '+' || *p == '-' )
{
if( *p == '+' )
{
++p;
ret += multi();
break;
}
if(*p == '-' )
{
++p;
ret -= multi();
break;
}
}
return ret;
}
int main()
{
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s",s);
printf("%ld",solve());
}