Pagini recente » Cod sursa (job #466119) | Cod sursa (job #2717923) | Cod sursa (job #2756213) | Cod sursa (job #869954) | Cod sursa (job #479201)
Cod sursa(job #479201)
#include <cstdio>
#include <cstring>
#define NN 100005
#define LMAX 2
char S[NN],*p=S,op[4][4]={"+-","*/"};
int eval( int a,int b, char op ){
switch ( op ) {
case '+' : return a+b;
case '-' : return a-b;
case '*' : return a*b;
case '/' : return a/b;
}
}
int expr( int lev ){
int x, y;
if( lev == LMAX ){
if( *p == '('){
++p, x = expr( 0 ) ,++p;
}
else {
for( x=0; *p>='0' && *p<='9'; p++ ){
x= x*10 + *p-'0';
}
}
}
else {
for( x=expr(lev+1) ; strchr(op[lev],*p) ; x=y){
y= eval(x , expr(lev+1), *p++);
}
}
return x;
}
int main(){
freopen("evaluare.in","r",stdin);
freopen("evaluare.out","w",stdout);
fgets(S,NN,stdin);
printf("%d",expr(0));
return 0;
}