在毕业设计中遇到这样一类问题:要编定一个通用子程序,但参数个数是变化的。举个例子:要求方程ax*x+bx+c=0的实根,参数a、b、c之中的一个或数个(反正数目不定)在不同的场合要求用实参传值给它。我编写的程序如下:
double f(double pc[],double x)
{ return(pc[0]*x*x-pc[1]*x+pc[2]);}
/********** 弦截法求方程实根 **********/
double Root(double x1,double x2,double ec,double (*fx)(),double pc[])
{
double x,y,y1;
y1=(*fx)(pc,x1);
do
{
x=(x1*(*fx)(pc,x2)-x2*(*fx)(pc,x1))/((*fx)(pc,x2)-(*fx)(pc,x1)); /* 求弦与x轴的交点 */
y=(*fx)(pc,x);
if(y*y1>0)
{
y1=y;
x1=x;
}
else x2=x;
}while(fabs(y)>ec);
return(x);
}
main()
{
double x,p[3];
p[0]=1,p[1]=2,p[2]=1;
x=Root(0,10,0.001,f,p);
printf("x=%lf\n",x);
}
谁能帮我解决一下问题呢?
----------------解决方案--------------------------------------------------------
函数重载可以解决吧
----------------解决方案--------------------------------------------------------
楼上正解!
如果只用C的话,写几个不同名的函数就好了,那所以可能枚举出来
----------------解决方案--------------------------------------------------------
函数重载可以解决吧
能不能说的详细点啊.
我也好象知道
----------------解决方案--------------------------------------------------------
函数重载就是函数名相同,参数不同,一个函数可以重载,实现多用。。。书上有介绍的
----------------解决方案--------------------------------------------------------
C不支持重载。。。C++可以
不过C你可以定义多个函数来解决这个问题
[此贴子已经被作者于2007-4-25 12:04:02编辑过]
----------------解决方案--------------------------------------------------------
我不想用C++。我正在用C做毕业设计,如果要写不同名的函数,那就不是几个的问题了,是重复劳动很多次!C++不是由C编出来的吗?!C++可以,C也应该可以才对啊!不过不知道方法如何。我上边的方法也不知道有什么错误,谁能指正一下啊??
----------------解决方案--------------------------------------------------------
路过。
呵呵!~
----------------解决方案--------------------------------------------------------
http://bbs.bc-cn.net/dispbbs.asp?boardid=5&replyid=90609&id=6725&page=1&skin=0&star=1
5楼
----------------解决方案--------------------------------------------------------
能不能说的详细点啊.
我也好象知道
c++ 才有~``
----------------解决方案--------------------------------------------------------