Pagini recente » Cod sursa (job #458190) | Cod sursa (job #2223510) | Cod sursa (job #1126822) | Cod sursa (job #2883001) | Cod sursa (job #298379)
Cod sursa(job #298379)
#include <stdio.h>
#define nmax 100005
char x [nmax], *p=x;
int eval ();
int termen ();
int factor ();
int main ()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets (x);
printf ("%d\n", eval ());
return 0;
}
int eval ()
{
int r=factor ();
if (*p == '+')
{
++p;
r+=factor ();
}
else
if (*p == '-')
{
++p;
r-=factor ();
}
return r;
}
int termen ()
{
int r=0;
if (*p == '(')
{
++p;
r=eval ();
++p;
return r;
}
for ( ; *p >= '0' && *p <= '9'; ++p)
r=r*10 + *p-'0';
return r;
}
int factor ()
{
int r=termen ();
while (*p == '*' || *p == '/')
{
if (*p == '*')
{
++p;
r*=termen ();
}
else
{
++p;
r/=termen ();
}
}
return r;
}