Pagini recente » Cod sursa (job #1853483) | Cod sursa (job #1701703) | Cod sursa (job #490878)
Cod sursa(job #490878)
# include <cstdio>
# include <cstring>
const char *FIN = "evaluare.in", *FOU = "evaluare.out" ;
const int MAX = 100005 ;
char op[4][4] = { "+-", "*/", "^", "" } ;
char S[MAX], *p = S ;
int see ( int a, int b, char o ) {
switch ( o ) {
case '+': return a + b ;
case '-': return a - b ;
case '*': return a * b ;
case '/': return a / b ;
}
}
int solve ( int lev ) {
int x, y ;
if ( lev == 2 ) {
if ( *p == '(' ) {
++p, x = solve ( 0 ), ++p ;
} else {
for ( x = 0; *p >= '0' && *p <= '9'; ++p ) {
x *= 10, x += *p - '0';
}
}
} else {
for ( x = solve ( lev + 1 ) ; strchr ( op[lev], *p ) ; x = y ) {
y = see ( x, solve ( lev + 1 ), *p++ ) ;
}
}
return x ;
}
int main ( void ) {
fgets ( S, MAX, fopen ( FIN, "r" ) ) ;
fprintf ( fopen( FOU, "w" ), "%d", solve ( 0 ) ) ;
}