24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1960  |  回复: 15

muqiuyan

木虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-06-02 18:44:44:
最近比较忙,没有怎么回帖。

简单地说一下吧,建议你使用函数指针,不然程序照你这样写以后又要修改积分的函数那你还得改。
double fsimp(double (*f)(double ),double a, double b, double eps) /  /*a为积分 ...

万分感谢,因为要编程,才开始学,很多都不懂。
麻烦在帮忙看看这个,我的程序里有两个积分,每个的积分变量还不同,怎么在程序中体现区分呢。

double fsimp(double (*f)(double ),double a, double b, double eps, int func_index)
{……..
……….
t1=((*f)(a,func_index)+(*f)(b,func_index))*h/2.0;
……….
p=p+(*f)(double ,func_index);  
……….
}


double f(double ?, int func_index)    //  这个地方如何区分积分变量呢,下面怎么定义。
{…….
……….
    swtich (func_index)
    {
    case 1:
计算y1的表达式;     //第一个函数   
        return (y1);
        break;
   
case 2:
计算y2的表达式;         //第二个函数
        return (y2);      
break;
    }
}

积分时就写为
fsimp(r,a,b,eps,1)        //积分第一个函数,其中r为第一个函数的积分变量
fsimp(T,a,b,eps,2)          //积分第二个函数,其中T为第二个函数的积分变量
11楼2010-06-03 10:56:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★ ★
resonant(金币+3):专家辛苦了;—) 2010-06-04 19:06:53
我也不知道是我没有弄明白你的意图还是你没有理解我建议用函数指针的用意。
直接写个很简单的范例,不知道对你有启发没有
#include
double plus(double (*f) (double), double a, double b);
double F1(double);
double F2(double);
int main()
{
    double x1, x2;
    double y1, y2;
    x1 = 0.5;
    x2 = 1.5;
    y1 = plus(F1, x1, x2);
    y2 = plus(F2, x1, x2);
    printf("plus of F1=%0.6f\n", y1);
    printf("plus of F2=%0.6f\n", y2);
    return 0;
}

double plus(double (*f) (double), double x1, double x2)
{
    return (f(x1) + f(x2));
}

double F1(double x)
{
    return x * x;
}

double F2(double x)
{
    return x;
}
只要你的2个积分函数的参数个数是一样的就行了
如果参数个数不一样的话建议用C++来写。C的可变参数估计你一时半会搞不清楚。
引用回帖:
Originally posted by muqiuyan at 2010-06-03 10:56:34:







万分感谢,因为要编程,才开始学,很多都不懂。
麻烦在帮忙看看这个,我的程序里有两个积分,每个的积分变量还不同,怎么在程序中体现区分呢。

double fsimp(double (*f)(double ),double a, d ...

[ Last edited by tjyl on 2010-6-3 at 12:39 ]
12楼2010-06-03 12:36:35
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)

引用回帖:
Originally posted by tjyl at 2010-06-03 12:36:35:
我也不知道是我没有弄明白你的意图还是你没有理解我建议用函数指针的用意。
直接写个很简单的范例,不知道对你有启发没有
#include
double plus(double (*f) (double), double a, double b);
...

谢谢。你所说的和我的问题还是有些不同。我要用一个求积分的子程序计算两个积分。在求积分的子程序中关于积分函数,积分变量的地方要能调用两个被积函数。被积函数子程序里有区分两个函数,及各自的变量。
PS:我是刚学C的,又急着编出程来,希望得到最直接的答案。
再次表示感谢
13楼2010-06-03 17:04:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hanyy1988

木虫 (正式写手)


muqiuyan(金币+1):谢谢参与
呵呵,感觉还是用函数指针的,这样比较能了解清楚!
14楼2010-06-03 22:11:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

muqiuyan

木虫 (小有名气)

引用回帖:
Originally posted by hanyy1988 at 2010-06-03 22:11:55:
呵呵,感觉还是用函数指针的,这样比较能了解清楚!

能具体介绍下吗?谢谢了
15楼2010-06-04 08:54:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjyl

金虫 (正式写手)

★ ★
resonant(金币+1):谢谢进一步应答。 2010-06-04 19:07:27
余泽成(金币+1):辛苦了,如果有时间的话可否给新手再详细讲解一下,辛苦了! 2010-06-08 23:19:33
看你上面说的我确信我明白你的意图的。不过你根本就没有明白我写的那个例子中函数指针使用的意义。
你要是把代码写的像前面的那样,会让人看了很崩溃的。
引用回帖:
Originally posted by muqiuyan at 2010-06-04 08:54:10:


能具体介绍下吗?谢谢了

16楼2010-06-04 16:18:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 muqiuyan 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见