Pagini recente » Cod sursa (job #180034) | Borderou de evaluare (job #190054) | Cod sursa (job #2028523) | Borderou de evaluare (job #1433375) | Cod sursa (job #1091222)
#include <cstdio>
#include <cstring>
using namespace std;
#define NMAX 100003
char s[NMAX], *p = s;
int Termen ();
int Factor ();
int Eval ()
{
int r = Termen ();
while (*p == '+' || *p == '-')
{
if (*p == '+')
{
++p;
r += Termen ();
break;
}
if (*p == '-')
{
++p;
r -= Termen ();
break;
}
}
return r;
}
int Termen ()
{
int r = Factor ();
while (*p == '*' || *p == '/')
{
if (*p == '*')
{
++p;
r *= Factor ();
break;
}
if (*p == '/')
{
++p;
r /= Factor ();
break;
}
}
return r;
}
int Factor ()
{
int 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\n", Eval ());
return 0;
}