Pagini recente » Cod sursa (job #771110) | Cod sursa (job #2504962) | Cod sursa (job #2312758) | Cod sursa (job #3212377) | Cod sursa (job #1091220)
#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 == '-')
{
switch (*p)
{
case '+':
{
++p;
r += Termen ();
break;
}
case '-':
{
++p;
r -= Termen ();
break;
}
}
}
return r;
}
int Termen ()
{
int r = Factor ();
while (*p == '*' || *p == '/')
{
switch (*p)
{
case '*':
{
++p;
r *= Factor ();
break;
}
case '/':
{
++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;
}