Pagini recente » Cod sursa (job #168654) | Cod sursa (job #2693930) | Cod sursa (job #1633446) | Cod sursa (job #3210044) | Cod sursa (job #1091191)
#include <cstdio>
#include <cstring>
using namespace std;
#define NMAX 100003
char s[NMAX], *p = s;
long Termen ();
long Factor ();
long Eval ()
{
long r = Termen ();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{
++p;
r += Termen ();
break;
}
else if (*p == '-')
{
++p;
r -= Termen ();
break;
}
}
return r;
}
long Termen ()
{
long r = Factor ();
while (*p == '*' || *p == '/')
{
if (*p == '*')
{
++p;
r *= Factor ();
break;
}
if (*p == '/')
{
++p;
r /= Factor ();
break;
}
}
return r;
}
long Factor ()
{
long r = 0;
if (*p == '(')
{
++p;
r = Eval ();
++p;
}
else
{
while (*p >= '0' && *p <= '9')
{
r = r * 10 + *p - '0';
++p;
}
}
return r;
}
int main ()
{
freopen ("evaluare.in", "r", stdin);
freopen ("evaluare.out", "w", stdout);
gets (s);
printf ("%d", Eval ());
return 0;
}