Pagini recente » Monitorul de evaluare | Statistici Horia Mercan (horiamercan) | Diferente pentru preoni-2007/runda-1/solutii intre reviziile 23 si 22 | Istoria paginii utilizator/marinaflom | Cod sursa (job #783952)
Cod sursa(job #783952)
#include <cstdio>
#include <cctype>
#define Max 100001
char a[Max],*b;
int eval();
int termen();
int factor();
int factor(){
int r = 0;
if( *b == '(')
{
b++;
r = eval();
b++;
} else
{
while( isdigit(*b) )
{
r = r* 10 + *b- '0';
b++;
}
}
return r;
}
int termen(){
int r = factor();
while( *b == '*' || *b == '/' )
{
if(*b == '*' )
{
b++;
r *= factor();
}
if(*b == '/' )
{
b++;
r /= factor();
}
}
return r;
}
int eval(){
int r = termen();
while( *b == '+' || *b == '-' )
{
if( *b == '+' )
{
b++;
r += termen();
}
if( *b == '-' )
{
b++;
r -= termen();
}
}
return r;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
scanf("%s ",a);
b = a;
printf("%d\n",eval());
return 0;
}