Point_line_triangle_类的组合

描述

设计一个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;
}

 

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值