fork download
  1. #define D double
  2. #define S for(;*p==' ';p++)
  3. D strtod();char*p,b[499]={0};D e(o){int c;D v;S;v=*p++-'('?strtod(p-1,
  4. &p):(v=e(0),*p-')'?p=b:p++,v);for(;;){S;c=*p++;if(!c|c==')'|1<o|o&(c==
  5. '+'|c=='-'))return--p,v;v=c-'+'?c-'-'?c-'*'?c-'/'?p=b,0:v/e(2):v*e(2):
  6. v-e(1):v+e(1);}}main(){D v;while(0<scanf("%[^\n]%*c",p=b+1)&&' '<=*p)
  7. v=e(0),printf(b<p?"%s => %.15g\n":" NG\n",b+1,v);return p<b+2;}
  8.  
Runtime error #stdin #stdout 0s 1792KB
stdin
1+2*3-4/5
1+2*(3-4)/5

stdout
1+2*3-4/5 => 6.2
1+2*(3-4)/5 => 0.6