Pagini recente » Cod sursa (job #738825) | Cod sursa (job #2477444) | Cod sursa (job #1125319) | Cod sursa (job #2481385) | Cod sursa (job #351798)
Cod sursa(job #351798)
#include <cstdio>
#define S 100000
char s[S],*p=s;
int termen();
int factor();
int eval()
{
long r = termen();
while ((*p == '+')||(*p == '-'))
{
if (*p == '+')
{
++p;
r += termen();
}
else
{
++p;
r -= termen();
}
}
return r;
}
int termen()
{
long r = factor();
while ((*p == '*')||(*p == '/'))
{
if (*p == '*')
{
++p;
r *= factor();
}
else
if (*p == '/')
{
++p;
r /= factor();
}
}
return r;
}
int factor()
{
long r = 0;
if (*p == '(')
{
++p;
r = eval();
++p;
return r;
}
while (('0' <= *p)&&(*p <= '9'))
{
r = r * 10 + *p - '0';
++p;
}
return r;
}
int main()
{
freopen ("evaluare.in","r",stdin);
freopen ("evaluare.out","w",stdout);
scanf ("%s",s);
printf ("%d",eval());
return 0;
}