一个C++有关问题~

求助一个C++问题~~~~急急急!!!!!!
数组与指针:函数指针
实现二分法求解方程。编写以下函数求方程   f(x)=0的解:
double   RolveRoot(double   (*pf)(double   x),   double   a,   double   b,   int   n);
其中pf是一个函数指针(指向f(x)),RolveRoot(),用来获得f(x)=0在区间[a,b]内的解,f(x)的形式如   f(x)=x*x-3x+6等。a,b指定了方程   f(x)=0解存在的区间。n是迭代次数,次数越多,精度越高。
二分法的步骤:
 计算   f(a)     f(b)     f((a+b)/2)
 若f(a)与f((a+b)/2)异号,则在[a,(a+b)/2]区间内有解,令
b   =   (a+b)/2,   回到第一步继续迭代,直到到达足够精度
 否则,令a   =   (a+b)/2,   回到第一步继续迭代,直到到达足够精度
实现RolveRoot(),并采用不同   f(x)   验证。

刚才发过一遍了,我们的一道作业题,希望各位高人指点一下,非常感谢


------解决方案--------------------
其实可以不用n来控制,直接设置经度范围就可以了,代码如下:
double RolveRoot(double (*pf)(double x), double a, double b, int n)
{
double x = (a + b) / 2;
while(fabs(pf(x)) > 1.e-6)//经度在e-6
{
if(pf(a) * pf(x) < 0)
b = x;
else
a = x;
x = (a + b) / 2;
}
return x;
}
当然你也可以使用循环次数来控制,但那样你可能不知道经度在师妹范围,代码:
double RolveRoot(double (*pf)(double x), double a, double b, int n)
{
double x = (a + b) / 2;
for(int i = 0 ; i < n; ++i)
{
if(pf(a) * pf(x) < 0)
b = x;
else
a = x;
x = (a + b) / 2;
}
return x;
}
------解决方案--------------------
#include <stdio.h>
#include <math.h>
#include <conio.h>
#define precision 0.0005 /* 精度*/
double f(double x)
{
return ( pow(x,6)-x)-1;
}
main()
{
double a =1; /* 区间左端点 */
double b = 2; /* 区间右端点 */
double mid_temp; /* 中点值的f(x)临时变量 */
double midpoint; /* 中点 */
double error_temp; /* 误差临时变量 */
double value; /* 存放方程的解确 */
double fx_left; /* 左端点 的f(x)临时变量 */
double fx_right; /* 右端点 的f(x)临时变量 */
do /* 二分法算法 */
{ clrscr(); /* 清屏 */
midpoint = (a + b)/2 ;
mid_temp = f( midpoint );
error_temp = 0.0;
fx_left = f(a);
fx_right = f(b);
if ( mid_temp==0 )
{
value=midpoint; /* 中点X的正好是解,输出 */
break;
}
else
{
if ( mid_temp * fx_left < 0 ) /* 中点值的f(x)与左端点值不同号 */
b = midpoint ; /* 右端点左移 */
else
a = midpoint; /* 否则, 左端点右移 */
}
error_temp = b - a; /* 以下取本轮的误差*/
} while(error_temp> precision); /* 当误差限小于允许范围时,中止循环*/
value=midpoint;
printf( " Equation : x*x*x*x*x*x-x-1=0\n ");
printf( " Equation Of Values : value= %.6f\n ",value); /* 结果保留至小数点后6位 */
}


------解决方案--------------------
double(*pf)(double x)
--------
这个是函数指针,实际调用的时候可以直接传函数地址也就是函数名即可,但是那个函数圆形要是double fun(double x)