Pagini recente » Cod sursa (job #525683) | Cod sursa (job #2764524) | Cod sursa (job #3230666) | Cod sursa (job #2708519) | Cod sursa (job #1447763)
#include <cstdio>
const int Max = 100001;
char S[Max], *P = S;
long Term();
long Fact();
long Eval()
{
long R = Term();
while (*P == '+' || *P == '-')
{
switch (*P)
{
case '+':
P++;
R += Term();
break;
case '-':
P++;
R -= Term();
break;
}
}
return R;
}
long Term()
{
long R = Fact();
while (*P == '*' || *P == '/')
{
switch (*P)
{
case '*':
P++;
R *= Fact();
break;
case '/':
P++;
R /= Fact();
break;
}
}
return R;
}
long Fact()
{
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);
scanf("%s",S);
printf("%d\n",Eval());
return 0;
}