请你使用c++,完成以下问题:定义一个点Point类,数据成员是整型横纵坐标;一个直线类Line,数据成员是两个Point对象指针,表示起点和终点(即Point两个对象指针为Line的内嵌对象);一个三角形类Triangle,继承自Line,数据成员有三角形的高height,以基类直线为底,以height为高的直角三角形,即直线和高分别为两条直角边。请实现相关函数,计算三角形的周长和面积并给出相关输出(计算结果保留到整数)。
时间: 2024-03-03 12:49:58 浏览: 154
好的,以下是使用C++实现的代码:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Point {
public:
int x, y;
Point(int _x, int _y) : x(_x), y(_y) {}
};
class Line {
public:
Point *p1, *p2;
Line(Point* _p1, Point* _p2) : p1(_p1), p2(_p2) {}
double length() {
return sqrt(pow(p1->x - p2->x, 2) + pow(p1->y - p2->y, 2));
}
};
class Triangle : public Line {
public:
int height;
Triangle(Point* _p1, Point* _p2, int _height) : Line(_p1, _p2), height(_height) {}
double perimeter() {
return length() + 2 * sqrt(pow(length() / 2, 2) + pow(height, 2));
}
double area() {
return length() * height / 2.0;
}
};
int main() {
Point p1(0, 0);
Point p2(3, 0);
Triangle t(&p1, &p2, 4);
cout << "Triangle perimeter: " << (int)t.perimeter() << endl;
cout << "Triangle area: " << (int)t.area() << endl;
return 0;
}
```
注:以上代码实现了定义一个点Point类,数据成员是整型横纵坐标;一个直线类Line,数据成员是两个Point对象指针,表示起点和终点(即Point两个对象指针为Line的内嵌对象);一个三角形类Triangle,继承自Line,数据成员有三角形的高height,以基类直线为底,以height为高的直角三角形,即直线和高分别为两条直角边。并且计算了三角形的周长和面积。
阅读全文