Pagini recente » Cod sursa (job #1781373) | Cod sursa (job #151417) | Cod sursa (job #1712937) | Cod sursa (job #1521336) | Cod sursa (job #170052)
Cod sursa(job #170052)
#include <stdio.h>
#define NM 100010
char s[NM], *p = s;
long int Termen();
long int Factor();
long int Eval();
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
scanf("%s", &s);
printf("%ld\n", Eval());
return 0;
}
long int Eval()
{
long int r = Termen();
while ( *p == '+' || *p == '-' )
{
switch ( *p )
{
case '+': ++p; r += Termen(); break;
case '-': ++p; r -= Termen(); break;
}
}
return r;
}
long int Termen()
{
long int r = Factor();
while ( *p == '*' || *p == '/' )
{
switch ( *p )
{
case '*' : ++p; r *= Factor(); break;
case '/' : ++p; r /= Factor(); break;
}
}
return r;
}
long int Factor()
{
long int r = 0;
if ( *p == '(' )
++p, r = Eval(), ++p;
else
{
while ( *p >= '0' && *p <= '9' )
r = r*10 + *p - '0',
++p;
}
return r;
}