题目描述:
设计用于表示点、线和三角形的类:Point、Line和Triangle,要求如下:
(1)Point类中包含两个用于表示点的X和Y坐标分量的公有数据成员,能够根据指定的X和Y坐标构建点对象。
(2)Line类中包含两个用于表示线段端点的私有对象成员,能够根据指定的两点构造线段对象(要求构造函数的参数为常引用),具有计算线段长度的公有成员函数。
(3)Triangle类中包含三个用于表示三角顶点的私有对象成员,能够根据指定的三点构造三角形对象(要求构造函数的参数为常引用),具有计算三角形周长和面积的公有成员函数。
在main函数中:
根据输入的三个点的坐标构建三角形对象,并输出的三角形的周长和面积。
输入: 依次输入三个点的坐标:x1,y1,x2,y2,x3,y3
输出: 输出三个点所构成的三角形的周长和面积
输入样例: 0 0 3 0 0 4
输出样例: 12 6
1 #include <iostream> 2 #include <cmath> 3 4 using namespace std; 5 6 class Point 7 { 8 public: 9 double x; 10 double y; 11 Point(double _x=0,double _y=0):x(_x),y(_y){} 12 }; 13 14 class Line 15 { 16 private: 17 Point pStart, pEnd; 18 public: 19 Line(const Point &start, const Point &end):pStart(start),pEnd(end){} 20 double Length() 21 { 22 double len; 23 len=sqrt((pEnd.x-pStart.x)*(pEnd.x-pStart.x)+(pEnd.y-pStart.y)*(pEnd.y-pStart.y)); 24 return len; 25 } 26 }; 27 28 class Triangle 29 { 30 private: 31 Point pA,pB,pC; 32 public: 33 Triangle(const Point &a,const Point &b,const Point &c):pA(a),pB(b),pC(c){} 34 double Perimeter(); 35 double Area(); 36 }; 37 38 double Triangle::Perimeter() 39 { 40 Line lab(pA,pB),lbc(pB,pC),lac(pA,pC); 41 return lab.Length()+ lbc.Length()+ lac.Length(); 42 } 43 44 double Triangle::Area() 45 { 46 Line lab(pA,pB),lbc(pB,pC),lac(pA,pC); 47 double x=0.5*(lab.Length()+lbc.Length()+lac.Length()); 48 return sqrt(x*(x-lab.Length())*(x-lbc.Length())*(x-lac.Length())); 49 } 50 51 int main() 52 { 53 double x1,y1; 54 double x2,y2; 55 double x3,y3; 56 cin>>x1>>y1>>x2>>y2>>x3>>y3; 57 Triangle obj(Point(x1,y1),Point(x2,y2),Point(x3,y3)); 58 cout<<obj.Perimeter()<<" "<<obj.Area(); 59 return 0; 60 }