设计并实现一个平面点类Point,要求:(1)用X,Y两个坐标值表示一个点;(2)正确初始化每个点,默认坐标值为原点;(3)计算点到原点的距离;(4)计算到另一个点的距离;(5)获取点的X,Y坐标值;(6)设置点的X,Y坐标;(7)移动点到新位置;编写测试程序
时间: 2023-06-12 18:04:28 浏览: 224
点和直线类文档(包含程序和难点解答)c#
下面是实现该平面点类Point的代码,其中包含了该类的成员变量、构造函数、成员函数以及测试程序:
```c++
#include <iostream>
#include <cmath>
using namespace std;
class Point {
private:
double x, y; //点的X,Y坐标值
public:
//默认构造函数,初始化每个点,默认坐标值为原点
Point() : x(0.0), y(0.0) {}
//构造函数,设置点的X,Y坐标
Point(double a, double b) : x(a), y(b) {}
//获取点的X,Y坐标值
double getX() const { return x; }
double getY() const { return y; }
//设置点的X,Y坐标
void setX(double a) { x = a; }
void setY(double b) { y = b; }
//移动点到新位置
void move(double a, double b) { x += a; y += b; }
//计算点到原点的距离
double distance() const { return sqrt(x * x + y * y); }
//计算到另一个点的距离
double distance(const Point &p) const {
double dx = x - p.x;
double dy = y - p.y;
return sqrt(dx * dx + dy * dy);
}
};
int main() {
Point p1, p2(3.0, 4.0);
cout << "p1: (" << p1.getX() << ", " << p1.getY() << ")" << endl;
cout << "p2: (" << p2.getX() << ", " << p2.getY() << ")" << endl;
cout << "Distance from p1 to origin: " << p1.distance() << endl;
cout << "Distance from p2 to origin: " << p2.distance() << endl;
cout << "Distance from p1 to p2: " << p1.distance(p2) << endl;
p1.move(2.0, 3.0);
cout << "p1 moved to (" << p1.getX() << ", " << p1.getY() << ")" << endl;
return 0;
}
```
运行该测试程序,输出结果如下:
```
p1: (0, 0)
p2: (3, 4)
Distance from p1 to origin: 0
Distance from p2 to origin: 5
Distance from p1 to p2: 5
p1 moved to (2, 3)
```
该测试程序创建了两个点p1和p2,分别输出它们的坐标值。然后,计算了p1和p2到原点的距离、p1到p2的距离,并输出结果。接着,将p1移动到了新的位置,再次输出p1的坐标值。
阅读全文