函数声明错误!
建议使用新标准
double romb(double (*f)(double),double a, double b, double ep)
{
int i,j,k,n;
double static T[10][10];
double h,x,s,I;
h=b-a;
T[0][0]=h/2.0*((*f)(a)+(*f)(b));
n=9;
for (i=1;i<=n;i++)
{
s=0;
for (k=0;k<=i-1;k++)
{
x=a+(k+0.5)*h;
s=s+(*f)(x);
T[i][0]=0.5*T[i-1][0]+h/2.0*s;
h=h/2.0;
}
}
for (j=1; ;j++)
{
for (i=0;i<=n-1;i++)
{
T[i][j]=(pow(4,j)*T[i+1][j-1]-T[i][j-1])/(pow(4,j)-1);
if (fabs(T[0][j]-T[0][j-1])
}
}
I=T[i][j];
return (I);
}
另外一个也按照这样修改
主程序
#include
#include"romb"
using namespace std;
double fun(double x)
{
double y;
y=x/(4.0+x*x);
return(y);
}
double romb(double (*f)(double),double a, double b, double ep);
int main()
{
double R=romb(fun,0.0,1.0,0.000001);
cout<
另外一个也这样修改。
另外,你函数体中的(*f)(a)直接使用 f(a),就可以了。
函数指针建议使用类型定义,如:
typedef double (*Fun)(double)
则
double romb(Fun f,double a, double b, double ep)
{
//函数体
}
函数声明:
double romb(Fun f,double a, double b, double ep);