正文

C++ 入门 第四章 4.9 函数的嵌套调用[2]2008-09-08 17:25:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/yzrj/38155.html

分享到:

 

(2) 用函数xpoint (x1,x2)来求(x1,f(x1))(x2,f(x2))的连线x轴的交点x的坐标。
(3) 用函数root(x1,x2)来求(x1,x2)区间的那个实根。显然,执行root函数的过程中要用到xpoint函数,而执行xpoint函数的过程中要用到f函数。
根据以上算法,可以编写出下面的程序:
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
double f(double);                 //函数声明
double xpoint(double, double);     //函数声明
double root(double, double);       //函数声明
int main( )
{ double x1,x2,f1,f2,x;
 
do
  {cout<<input x1,x2:″;
   cin>>x1>>x2;
   f1=f(x1);
   f2=f(x2);
  } while(f1*f2>=0);
 x=root(x1,x2);
 cout<<setiosflags(iosfixed)<<setprecision(7); 
//指定输出7位小数
 cout<<A root of equation is <<x<<endl;
 return 0;
}
double f(double x)              //定义f函数,以实现f(x)
{double y;
 y=x*x*x-5*x*x+16*x-80;
 return y;
}
 
double xpoint(double x1, double x2)       //定义xpoint函数,求出弦与x轴交点
{double y;
 y=(x1*f(x2)-x2*f(x1))/(f(x2)-f(x1));    //xpoint函数中调用f函数
 return y;
}
double root(double x1, double  x2)       //定义root函数,求近似根
{double x,y,y1;
 y1=f(x1);
 do
  {x=xpoint(x1,x2);             //root函数中调用xpoint函数
   y=f(x);                      //root函数中调用f函数
   if (y*y1>0)
    {y1=y;
     x1=x;
    }
   else
x2=x;
  }while(fabs(y)>=0.00001);
 return x;
}
 
运行情况如下:
input x1,x22.5  6.7
A root of equation is 5.0000000
对程序的说明:
(1) 在定义函数时,函数名为fxpointroot3个函数是互相独立的,并不互相从属。这3个函数均定为双精度型。
(2) 3个函数的定义均出现在main函数之后,因此在main函数的前面对这3个函数作声明。
习惯上把本程序中用到的所有函数集中放在最前面声明。
(3) 程序从main函数开始执行。函数的嵌套调用见图4.8

阅读(2212) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册