Pagini recente » Cod sursa (job #417443) | Cod sursa (job #1273101) | Cod sursa (job #317191) | Cod sursa (job #1005275) | Cod sursa (job #1419416)
#include <cstdio>
using namespace std;
const int mx = 100005 ;
char s[mx] , *p = s ;
int eval() ;
int termen() ;
int factor() ;
int eval()
{
int rez = termen() ;
while ( *p == '+' || *p == '-' )
{
if ( *p == '+' )
{
p ++ ;
rez += termen() ;
}
else
{
p ++ ;
rez -= termen() ;
}
}
return rez ;
}
int termen()
{
int rez = factor() ;
while ( *p == '*' || *p == '/' )
{
if ( *p == '/' )
{
p ++ ;
rez /= factor() ;
}
else
{
p ++ ;
rez *= factor() ;
}
}
return rez ;
}
int factor()
{
int rez = 0 ;
if ( *p == '(' )
{
p ++ ;
rez = eval() ;
p ++ ;
}
else
while ( *p <= '9' && *p >= '0' )
{
rez = rez * 10 + *p - 48 ;
p ++ ;
}
return rez ;
}
int main()
{
freopen( "evaluare.in" , "r" , stdin ) ;
freopen( "evaluare.out" , "w" , stdout ) ;
scanf( "%s" , s ) ;
printf( "%d\n" , eval() ) ;
return 0;
}