Pagini recente » Cod sursa (job #2982659) | Cod sursa (job #733467) | Cod sursa (job #777116) | Cod sursa (job #2253134) | Cod sursa (job #255901)
Cod sursa(job #255901)
#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=='-')
{
switch ( *p )
{
case '+':
++p;
r += termen();
break;
case '-':
++p;
r -= termen();
break;
}
}
return r;
}
ll termen ()
{
ll r;
r=factor ();
while (*p=='*' || *p=='/')
{
switch ( *p )
{
case '*' :
++p;
r *= factor();
break;
case '/':
++p;
r /= factor();
break;
}
}
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;
}