定义点类Point和线段类LineSegment。线段的两个终端为Point类对象。 (1)点类 ①私有成员变量包括x和y,双精度型,表示点的横坐标和纵坐标; ②公有成员函数包括: ·无参数构造函数(缺省构造函数),将点坐标设为(0,0); ·二参数构造函数,根据实际值赋予x和y实际坐标值; ·显示函数,用于显示x和y的值。 (2)线段类 ①私有成员变量包括两个点类对象,分别定义线段的左端点和右端点; ②公有成员函数要求实现的功能如下: ·构造函数,用于对两个点进行初始化 ·计算线段的长度 ·显示函数,用于显示线段的两个端点、线段的长度 (3)主函数里面定义2个点类的对象和1个矩形类的对象,进行测试。c++
时间: 2024-02-13 21:01:51 浏览: 122
line-segment-intersect-2d:确定两个线段是否在2d中相交并计算相交点
下面是代码实现:
```
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y;
public:
Point() {
x = 0;
y = 0;
}
Point(double x1, double y1) {
x = x1;
y = y1;
}
void display() {
cout << "x = " << x << ", y = " << y << endl;
}
};
class LineSegment {
private:
Point left_point, right_point;
public:
LineSegment(Point p1, Point p2) {
left_point = p1;
right_point = p2;
}
double length() {
double dx = left_point.getX() - right_point.getX();
double dy = left_point.getY() - right_point.getY();
return sqrt(dx * dx + dy * dy);
}
void display() {
cout << "Left endpoint: ";
left_point.display();
cout << "Right endpoint: ";
right_point.display();
cout << "Length: " << length() << endl;
}
};
int main() {
Point p1(0, 0);
Point p2(3, 4);
LineSegment ls(p1, p2);
ls.display();
return 0;
}
```
输出结果为:
```
Left endpoint: x = 0, y = 0
Right endpoint: x = 3, y = 4
Length: 5
```
解释:
我们首先定义了 `Point` 类,其中包含了点的横坐标和纵坐标,并实现了无参构造函数、双参数构造函数和显示函数。
然后我们定义了 `LineSegment` 类,其中包含了两个点类对象,分别表示线段的左端点和右端点。我们实现了构造函数、计算线段长度的函数和显示函数。
在主函数中,我们创建了两个 `Point` 类的对象 `p1` 和 `p2`,分别表示点 (0, 0) 和点 (3, 4)。然后我们创建了一个 `LineSegment` 类的对象 `ls`,将 `p1` 和 `p2` 作为参数传入构造函数中,创建了一条线段。最后我们调用 `display()` 函数,输出线段的两个端点和线段的长度。
注意,在计算线段长度时,我们使用了 `sqrt()` 函数,该函数是数学库中的函数,需要在程序开头添加 `#include <cmath>` 来引入该函数。
阅读全文