Pagini recente » Cod sursa (job #58121) | Cod sursa (job #1256654) | Cod sursa (job #835018) | Cod sursa (job #480034) | Cod sursa (job #298427)
Cod sursa(job #298427)
#include <stdio.h>
#define nmax 100005
#define pr(x) fprintf(stderr,#x" = %d\n",x)
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=termen ();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{
++p;
r+=termen ();
}
else
if (*p == '-')
{
++p;
r-=termen ();
}
}
return r;
}
int factor ()
{
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 termen ()
{
int r=factor ();
while ((*p == '*') || (*p == '/'))
{
if (*p == '*')
{
++p;
r*=factor ();
}
else
{
++p;
r/=factor ();
}
}
return r;
}