Pagini recente » Cod sursa (job #2944491) | Cod sursa (job #1827128) | Cod sursa (job #2663850) | Cod sursa (job #2715134) | Cod sursa (job #410384)
Cod sursa(job #410384)
#include <cstdio>
const int S = 100002;
char s[S],*p=s+1;
int termen();
int factor();
int eval()
{
int r = termen();
while ((*p == '+')||(*p == '-'))
{
if (*p == '+')
{
++p;
r += termen();
}
if (*p == '-')
{
++p;
r -= termen();
}
}
return r;
}
int termen()
{
int r = factor();
while ((*p == '*')||(*p == '/'))
{
if (*p == '*')
{
++p;
r *= factor();
}
if (*p == '/')
{
++p;
r /= factor();
}
}
return r;
}
int factor()
{
int r = 0;
if (*p == '(')//expresie
{
++p;//trecem peste '('
r = eval();
++p;//trecem peste ')'
}
else //numar
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);
gets(s+1);
printf("%d",eval());
return 0;
}