#include #include double shori(double a, double b, double eps ) { double c ; while( b-a > eps ){ c = ( a + b )/2.0 ; if( cos(a) * cos(c) <0 ) { b = c; }else{ a = c; } } c=( a + b )/2.0 ; return(c); } main() { double eps ; double a, b ; double c ; printf("input a \n"); scanf("%lf", &a ); printf("input b \n"); scanf("%lf", &b ); if( b<=a || cos(a)*cos(b)>0.0 ){ fprintf( stderr, "illegal interval %g %g\n", a, b ); exit(1); } printf("input epsilon \n"); scanf("%lf", &eps ); if( eps<=0 ){ fprintf( stderr, "illegal accuracy %g\n", eps ); exit(1); } c = shori( a, b, eps ); printf( "%g (f(c)=%g)\n", c , cos( c ) ); }