包含

题目描述:

  设计用于表示点、线和三角形的类: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 }

 

posted @ 2020-04-22 09:42  今天你AC了吗  阅读(265)  评论(0编辑  收藏  举报