注册 登录
编程论坛 C++教室

本人菜菜一名望大神指教(详细点的最好)三口

yj1258252651 发布于 2013-04-14 21:11, 369 次点击
#include <iostream.h>
void main()
{   
    int x0,x1,x2,fx0,fx1,fx2;
     do
     {
       cout<<"enter x1&x2: "<<endl;
       cin>>x1>>x2;
       fx1=x1*((2*x1-4)*x1+3)-6;//这句话什么意思
       fx2=x2*((2*x2-4)*x2+3)-6;//不懂

     }while(fx1*fx2>0);//为什么是这个条件
     do
     {
       x0=(x1+x2)/2;
       fx0=x0*((2*x0-4)*x0+3)-6;//不懂
       if((fx0*fx1)<0)//条件不懂
       {
         x2=x0;
         fx2=fx0;
       }
       else
       {
      
           x1=x0;
           fx1=fx0;
       }
     }while((fx0)>=1e-5);
     cout<<"x= "<<x0<<endl;
     
}
2 回复
#2
yuccn2013-04-15 00:16
不懂怎么回答
#3
邓士林2013-04-15 00:22
你好好看看基础知识吧!注释了一下:
#include <iostream.h>
void main()
{   
    int x0,x1,x2,fx0,fx1,fx2;
     do
     {
       cout<<"enter x1&x2: "<<endl;
       cin>>x1>>x2;
       fx1=x1*((2*x1-4)*x1+3)-6;//这是个赋值表达式,就是将多项式的结果赋值给fx1
       fx2=x2*((2*x2-4)*x2+3)-6;//同上

     }while(fx1*fx2>0);//这个是题目要求的结束条件,如果没有这个,循环可能一直进行成为死循环
     do
     {
       x0=(x1+x2)/2;
       fx0=x0*((2*x0-4)*x0+3)-6;//这是个赋值表达式,就是将多项式的结果赋值给fx0
       if((fx0*fx1)<0)//如果二者fx0*fx1的值小于0,怎进行下面
       {
         x2=x0;
         fx2=fx0;
       }
       else
       {
      
           x1=x0;
           fx1=fx0;
       }
     }while((fx0)>=1e-5);
     cout<<"x= "<<x0<<endl;
     
}
1