描述
设计一个Point类,表示平面中的一个点
设计一个Line类,表示平面的一条线段
设计一个Triangle类(三角形类),内含三条边。
要求:
设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制
设计Triangle类的成员函数,分别完成三条边能否构成三角形的检查,三角形周长的计算
输入
三个点
输出
三角形的周长(保留小数点后三位数)。如果不能构成三角形,输出 no
样例输入
0 0
0 1
1 0
样例输出
3.414
/*每一步调用系统自带的默认复制构造函数即可*/
#include <iostream>
#include <iomanip>
#include <cmath>
using namespace std;
class Line;
class Triangle;
class Point{
int x,y;
public:
Point (int x,int y){
this->x=x;
this->y=y;
}
friend class Line;
};
class Line{
Point Aa,Bb;
public:
Line(Point a,Point b):Aa(a),Bb(b){}
double length(){
return sqrt((Aa.x-Bb.x)*(Aa.x-Bb.x)+(Aa.y-Bb.y)*(Aa.y-Bb.y));
}
friend class Triangle;
};
class Triangle{
Line l1,l2,l3;
double li1,li2,li3;
public:
Triangle(Line o,Line p,Line q):l1(o),l2(p),l3(q){}
bool flag()
{
li1=l1.length();
li2=l2.length();
li3=l3.length();
if(li1+li2>li3&&li2+li3>li1&&li1+li3>li2) return true;
else return false;
}
void circu()
{
cout<<fixed<<setprecision(3)<<li1+li2+li3<<endl;
}
};
int main()
{
int a,b,c,d,e,f;
cin>>a>>b>>c>>d>>e>>f;
Point A (a,b);
Point B (c,d);
Point C (e,f);
Line l1(A,B);
Line l2(B,C);
Line l3(A,C);
Triangle tri(l1,l2,l3);
if(tri.flag())
tri.circu();
else cout<<"no"<<endl;
return 0;
}