题目
设计一个三角形类 Triangle,给定三角形的三条边长 x、y、z,成员函数 IsTrig()用 来判断是否是三角形,定义私有的求三角形面积的成员函数 Area()。类的友元函数 SumArea()用于计算并输出两个三角形面积之和,若不是合法三角形则输出“error”, 在主函数中测试 SumArea()函数。
代码
head.h
class Triangle
{
public:
bool IsTrig();
Triangle(float,float,float);
friend float SumArea(Triangle,Triangle);//友元函数
private:
float x,y,z;
float Area();
};
head.cpp
#include"head.h"
#include<cmath>
Triangle::Triangle(float a,float b,float c)//构造函数
{
x=a;y=b;z=c;
}
bool Triangle::IsTrig()//判断是三角形吗?
{
if(x+y<=z) return 0;
if(z+y<=x) return 0;
if(z+x<=y) return 0;
else return 1;
}
float Triangle::Area()//算面积,海伦公式
{
float p = (x+y+z)/2;
return sqrt(p*(p-x)*(p-y)*(p-z));
}
float SumArea(Triangle a,Triangle b)//友元函数
{
return a.Area()+b.Area();
}
main.cpp
#include<iostream>
#include"head.h"
using namespace std;
int main()
{
float m1,m2,m3,n1,n2,n3;
cout << "请输入第一个三角形的三边长"<<endl;
cin >> m1>>m2>>m3;
cout << "请输入第二个三角形的三边长"<<endl;
cin >> n1>>n2>>n3;
Triangle t1(m1,m2,m3);
Triangle t2(n1,n2,n3);
bool jud1 = t1.IsTrig();
bool jud2 = t2.IsTrig();
if(jud1 == 0 ||jud2 == 0)//判断是否是三角形
{
cout << "error"<<endl;
goto tt;
}
else//计算面积和
{
float sum = SumArea(t1,t2);
cout << sum<<endl;
}
tt: return 0;
}