建立一个Point类,表示平面中的一个点;建立一个Line类,表示平面中的一条线段,内含两个Point类的对象;建立Triangle类,表示一个三角形,内含3个Line类的对象。设计3个类相应的构造函数、复制构造函数。在Triangle类中设计一个成员函数,完成三角形是否构成三角形的判断,如果构成则计算面积和输出显示。
时间: 2023-04-05 16:02:55 浏览: 176
好的,我可以回答这个问题。以下是代码示例:
```
class Point {
private:
double x;
double y;
public:
Point(double x, double y) {
this->x = x;
this->y = y;
}
};
class Line {
private:
Point p1;
Point p2;
public:
Line(Point p1, Point p2) {
this->p1 = p1;
this->p2 = p2;
}
};
class Triangle {
private:
Line l1;
Line l2;
Line l3;
public:
Triangle(Line l1, Line l2, Line l3) {
this->l1 = l1;
this->l2 = l2;
this->l3 = l3;
}
Triangle(const Triangle& other) {
this->l1 = other.l1;
this->l2 = other.l2;
this->l3 = other.l3;
}
bool isTriangle() {
double a = sqrt(pow(l1.p1.x - l1.p2.x, 2) + pow(l1.p1.y - l1.p2.y, 2));
double b = sqrt(pow(l2.p1.x - l2.p2.x, 2) + pow(l2.p1.y - l2.p2.y, 2));
double c = sqrt(pow(l3.p1.x - l3.p2.x, 2) + pow(l3.p1.y - l3.p2.y, 2));
return (a + b > c) && (a + c > b) && (b + c > a);
}
double getArea() {
double a = sqrt(pow(l1.p1.x - l1.p2.x, 2) + pow(l1.p1.y - l1.p2.y, 2));
double b = sqrt(pow(l2.p1.x - l2.p2.x, 2) + pow(l2.p1.y - l2.p2.y, 2));
double c = sqrt(pow(l3.p1.x - l3.p2.x, 2) + pow(l3.p1.y - l3.p2.y, 2));
double p = (a + b + c) / 2;
return sqrt(p * (p - a) * (p - b) * (p - c));
}
};
```
在Triangle类中,isTriangle函数用于判断三条线段是否能构成三角形,getArea函数用于计算三角形的面积。
阅读全文