作业帮 > 综合 > 作业

有关于牛顿迭代法/*已知三角形的三边长为a,b,c, 求三角形的面积公式为: area=sqrt(s(s-a)(s-b)

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/08 16:51:39
有关于牛顿迭代法
/*已知三角形的三边长为a,b,c, 求三角形的面积公式为: area=sqrt(s(s-a)(s-b)(s-c)),
其中, s=(a+b+c)/2.计算面积时,必须用牛顿迭代公式求一个数的平方根.
试建立一个类Tri, 给出三角形的三边长,求三角形的面积.
规定只能调用类的成员函数求平方根(不能用库函数 sqrt) .具体要求如下:
(1)私有数据成员: double a,b,c;
(2)公有成员函数
Tri(double a1,double b1, double c1);构造函数,初始化三边长
double sqroot(double m);用牛顿迭代公式求一个数的平方根
double farea(); 求三角形的面积,调用sqroot函数
void print();输出三角形的三边长,求出并输出三角形的面积.
(3) 在主函数中完成对该类测试,定义一个对象 san,三边长分别为3,4,5.调用print()函数输出,程序正确的运行结果是:
a=3,b=4,c=5
area=6
*/
#include
#include
using namespace std;
class Tri
{public:
Tri(double a1,double b1,double c1):a(a1),b(b1),c(c1){}
double sqroot(double m)//f(x)=x^2-m=0
{double a=m/2,b;
do
{b=a;
a=(b*b+m)/(2*b);
}while(fabs(a-b)>0.000001);
return a;
}
double farea()
{double s,l;
s=(a+b+c)/2;
l=s(s-a)(s-b)(s-c);
return sqroot(l);}
void print()
{cout
//l=s(s-a)(s-b)(s-c);
//.
l=s*(s-a)*(s-b)*(s-c);//是想相乘吧?