Pagini recente » Cod sursa (job #11876) | Cod sursa (job #2823264) | Cod sursa (job #504568) | Cod sursa (job #3251333) | Cod sursa (job #856331)
Cod sursa(job #856331)
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std ;
#define maxs 100001
char sir[maxs] ;
char *p = sir ;
int termen() ;
int factor() ;
int evaluare()
{
int rez = termen() ;
while( *p == '+' || *p == '-' )
{
switch( *p )
{
case '+' :
{
++p ;
rez += termen() ;
break ;
}
case '-' :
{
++p ;
rez -= termen() ;
break ;
}
}
}
return rez ;
}
int termen()
{
int rez = factor() ;
while( *p == '*' || *p == '/' )
{
switch( *p )
{
case '*' :
{
++p ;
rez *= factor() ;
break ;
}
case '/' :
{
++p ;
rez /= factor() ;
break ;
}
}
}
return rez ;
}
int factor()
{
int rez = 0 ;
if( *p == '(' )
{
++p ;
rez = evaluare() ;
++p ;
}
else
{
while( *p >= '0' && *p <= '9' )
{
rez = rez * 10 + *p - '0' ;
++p ;
}
}
return rez ;
}
int main()
{
freopen("evaluare.in", "r", stdin);
freopen("evaluare.out", "w", stdout);
fgets( sir, maxs, stdin ) ;
printf("%d\n", evaluare() );
return 0 ;
}