24小时热门版块排行榜    

CyRhmU.jpeg
查看: 1312  |  回复: 3

pshdjj2pk9

金虫 (小有名气)

[交流] 关于用弦截法求f(x)=3x^3-5x^2+16x-60=0的c++编程问题,我的程序如下。已有1人参与

# include
# include

float f(float x)
{
        float y;
        y=((x-5.0)*x+16.0)*x-80.0;
        return y;
}

float xpoint(float x1,float x2)
{
        float x;
        x=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));
        return x;
}

float root(float x1,float x2)
{
        float x,y,y1;
        y1=f(x1);       
        do
        {
                x=xpoint(x1,x2);
                y=f(x);
                if(y*y1>0)
                {
                        y1=y;
                        x1=x;
                }
                else
                        x2=x;
               
        }
        while (fabs(y)>=0.00001);   
        return x;
}

int main(void)
{
        float x1,x2,f1,f2,x;
        do
        {        printf("input x1 x2:\n" );
                scanf("%f%f",&x1,&x2);
                f1=f(x1);
                f2=f(x2);
        }
        while(f1*f2>0);
        x=root(x1,x2);
        printf("a root of equation is %8.4f\n",x);
        return 0;
}
说明:其中“printf("input x1 x2:\n" );  ”  n"和);之间没有空格,因为如果不加空格的话会变成";

自检也没有问题,就是调试的时候出现了下列问题:
输入1 2,1,3或2 6,2 10 什么的可以,但输入2 11(或后一个数大于10)就不行了(程序就停在那里不动了,死循环了?),为什么呢?(反正很多数都不行)

[ Last edited by pshdjj2pk9 on 2012-5-18 at 11:43 ]
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lijie169

铜虫 (著名写手)


小木虫: 金币+0.5, 给个红包,谢谢回帖
在那个root方法里面的else 你应该还缺少一个 y2=y;这句!

» 本帖已获得的红花(最新10朵)

2楼2012-05-18 17:50:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pshdjj2pk9

金虫 (小有名气)

送鲜花一朵
引用回帖:
2楼: Originally posted by lijie169 at 2012-05-18 17:50:46:
在那个root方法里面的else 你应该还缺少一个 y2=y;这句!

哦,那我试试
3楼2012-05-21 07:27:21
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

pshdjj2pk9

金虫 (小有名气)

引用回帖:
2楼: Originally posted by lijie169 at 2012-05-18 17:50:46:
在那个root方法里面的else 你应该还缺少一个 y2=y;这句!

刚试过了,好像还是不行!!!!
4楼2012-05-21 07:58:26
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 pshdjj2pk9 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见