设计如下类:
1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个三角形。
2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制
3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,面积显示。
#include
#include
using namespace std;
class Point
{
public:
double x;
double y;
Point(double a,double b)
{
x=a;
y=b;
}//带参数的构造函数
};
class Line
{
public:
double *x1,*x2,*y1,*y2,l;
Line(Point&A,Point&B )
{
x1=new double;
x2=new double;
y1=new double;
y2=new double;
*x1=A.x;
*y1=A.y;
*x2=B.x;
*y2=B.y;
}//复制构造函数
double L()
{
l=pow((*x1-*x2),2)+((*y1-*y2),2);
l=pow(l,0.5);//用函数求两点间的距离,即线段长度
return l;
}
~Line()//析构函数
{
delete[] x1;
delete[] y1;
delete[]x2;
delete[]y2;
}
};
class Triangle
{
public:
double *A,*B,*C,s;
Triangle(Line &T1,Line&T2,Line&T3)
{
A=new double;
B=new double;
C=new double;
*A=T1.L();
*B=T2.L();
*C=T3.L();
}//线的长度赋值,用复制构造函数实现
void judge()
{
if((*A+*B>*C)&&(*A+*C>*B)&&(*B+*C>*A))
{
double x;
x=(*A+*B+*C)/2;
s=x*(x-*A)*(x-*B)*(x-*C);
s=pow(s,0.5);
cout<<"面积为" <
}
else
{
cout<<"不是三角形";
}//判断和三角形面积的计算
}
};
int main()
{
double x1,x2,x3,x4,x5,x6,y1,y2,y3,y4,y5,y6;
cout<<"请输入6个点";
cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4>>x5>>y5>>x6>>y6;
Point A(x1,y1) ,B(x2,y2),C(x3,y3),D(x4,y4),E(x5,y5),F(x6,y6);
Line G(A,B),N(C,D),O(E,F);//线的创建
Triangle T(G,N,O);
T.judge();
}
程序与之前不同的是,创建了三个类,分别代表,点,线,三角形,三个类之间的联系比较紧密,创建点类
点的坐标为横纵两个维度的,所以类中设立两个变量,使用构造函数进行赋值;
创建线类
线类中的对象不是简单的变量,它是以点类为对象的,所以赋值使用的函数为赋值构造函数,赋值构造函数与构造函数的不同就在于它的对象;先创建两个点,然后创建线,创建完成后记得写析构函数
创建三角函数
跟使用点类创建线相似,先用线类创建三个线,判断是否可以构成三角形,可以则计算面积;
主函数
包括数据的输入与三个类的使用