#include #include #include char *chsigns="+, -, *, /, max, min\n"; char *signs() { return chsigns; } double oper(double a1, double a2, char *op) { double res=0.0f; /* printf ("%f, %f, %s\n",a1,a2,op); */ if (op[1] == 0) { switch (op[0]) { case '+': res=a1+a2; break; case '-': res=a1-a2; break; case '*': res=a1*a2; break; case '/': if (a2 == 0.0f) op[0]=2; else res=a1/a2; break; default: /* BadExp */ op[0]=1; return 0.0f; } /* switch */ op[0]=0; return res; } if (strcmp(op,"max") == 0) { op[0]=0; return (a1 > a2) ? a1 : a2; } if (strcmp(op,"min") == 0) { op[0]=0; return (a1 < a2) ? a1 : a2; } op[0]=1; return 0.0f; }