设计如下类: 1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端, 内含两个Point类的对象;建立Triangle类,表示一个三角形

设计如下类:
    1) 建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线端,
    内含两个Point类的对象;建立Triangle类,表示一个三角形,内含三个Line类的对象构成一个
    三角形。
     2)设计三个类的相应的构造函数、复制构造函数,完成初始化和对象复制
     3)设计Triangle类的成员函数完成三条边是否能构成三角形的检验和三角形面积计算,
     面积显示。

#include<iostream>
#include<cmath>
using namespace std;
class point
{
private:
    int x;
    int y;
public:
    point();//无参数的构造函数
    point(int _x,int _y):x(_x),y(_y){}//有参数的构造函数
    ~point() {};//注意!加{}才是定义,声明完必须定义,若此处无{},类外也没定义,则报错
    point(point& a) { x = a.x; y = a.y; };//拷贝构造函数
   
    int getx()//建立函数目的:提供接口,可以访问私有变量
    {
        return x;
    }
    int gety()
    {
        return y;
    }

    //friend class line;
   // 老师建议少使用友元
};
class line
{
private:
    point p1,p2;
public:
    line(): p1(0, 0), p2(0, 0){}
    line(point p11,point p12):p1(p11),p2(p12){}
    ~line() {};//析构函数
    line(line& l) { p1 = l.p1; p2 = l.p2; };
    double length();//求线段长度
    //friend class triangle;
};
class triangle
{
private:
    line l1,l2, l3;
public:
    triangle(int l1=0,int l2=0,int l3=0);
    triangle(line a, line b, line c) :l1(a), l2(b), l3(c) {}
    ~triangle() {};
    void judje();//判断是否是三角形
    void area();//算面积
};
point::point()
{
    x = 1;
    y = 1;
}
double line::length()
{
    double l;
    int x1,y1, x2, y2;
    x1 = p1.getx();
    y1 = p1.gety();
    x2 = p2.getx();
    y2 = p2.gety();
    l = sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
    return l;
}
void triangle::judje()//判断能否构成三角形
{
    
   if ((l1.length() + l2.length() > l3.length()) && (l1.length() + l3.length() > l2.length())
        && (l2.length() + l3.length() > l1.length()))//l1.length后面如果没有(),不是函数
    {
        cout << "可以构成三角形"<<endl;
        area();
    }
    else
        cout << "不能构成三角形" << endl;
}
void triangle::area()
{
    double p,s;
    p = (l1.length() + l2.length() + l3.length())/2;//海伦公式算面积
    s = sqrt(p * (p - l1.length()) * (p - l2.length()) * (p - l3.length()));
    cout << "三角形面积为:" << s << endl;
  
}
int main()
{
    int x1, y1;
    cout << "A点坐标:";
    cin >> x1>> y1;
    point p1(x1, y1);
    cout << "B点坐标:";
    cin >> x1 >> y1;
    point p2(x1, y1);
    cout << "C点坐标:";
    cin >> x1 >> y1;
    point p3(x1, y1);
    line l1(p1, p2);
    line l2(p1, p3);
    line l3(p2, p3);
    l1.length();
    l2.length();
    l3.length();
    triangle t(l1,l2,l3);
    t.judje();
    return 0;
}

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值