#include "stdio.h"
#include "conio.h"
#include "math.h"
#define MaxK 1000
#define EPS 0.5e-8
double f(double x) {return x*x*x - x - 1 ;}
void main()
{
    double x0 = 1, x1 =  2;
    int ZhengGe(double (*f)(double) , double &x0 ,double &x1,double eps);
    if(ZhengGe(f,x0,x1,EPS) == 1 )
      printf("the root is x=%f\n\n",x1);
    else printf("the method is fail!");
}
int ZhengGe(double (*f)(double) , double &x0 ,double &x1,double eps)
{
      int k = 0;
      double xk;
   printf("k\t\t   xk\t     f(xk)\n");
   printf("--------------------------------------\n");
      xk = x1 - (f(x1)*(x1 - x0))/(f(x1) - f(x0));
   printf("%d\t\t%f   %f\t\t\t\t\t\t",k,x0,f(x0));
   
   k = k+1;
      printf("%d\t\t%f   %f\t\t\t\t\t\t",k,x1,f(x1));
   k = k+1;
   printf("%d\t\t%f   %f\t\t\t\t\t\t",k,xk,f(xk));
      
      do
      {
    k++;
    
          x0 = x1;
          x1 = xk;
          xk = x1 - (f(x1)*(x1 - x0))/(f(x1) - f(x0));
    printf("%d\t\t%f   %f\t\t\t\t\t\t",k,xk,f(xk));
       
      }while(fabs( xk - x1 ) > eps );
   printf("--------------------------------------\n");
      
      x1 = xk;
      return 1;
}