Pagini recente » Cod sursa (job #1442958) | Cod sursa (job #949791) | Cod sursa (job #2567166) | Cod sursa (job #2366024) | Cod sursa (job #255896)
Cod sursa(job #255896)
#include <stdio.h>
#define ll long
#define DIM 100010
char a[DIM],*p=a;
ll eval ();
ll termen ();
ll factor ();
int main ()
{
freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
fgets (a,DIM,stdin);
printf ("%ld",eval ());
return 0;
}
ll eval ()
{
ll r;
r=termen ();
while (*p=='+' || *p=='-')
{
if (*p=='+')
{
++p;
r+=termen ();
}
else if (*p=='-')
{
++p;
r-=termen ();
}
}
return r;
}
ll termen ()
{
ll r;
r=factor ();
while (*p=='*' || *p=='/')
{
if (*p=='*')
{
++p;
r*=termen ();
}
else if (*p=='/')
{
++p;
r/=termen ();
}
}
return r;
}
ll factor ()
{
ll r=0;
if (*p=='(')
{
++p;
r=eval ();
++p;
}
else
while (*p>='0' && *p<='9')
{
r=r*10+*p-'0';
++p;
}
return r;
}