C++题目58:对点坐标与原点距离排序 定义Point类描述点的坐标,可以输出坐标,可以求两个点之间的距离。 主函数声明Point类数组Point p[5],输入5个点的坐标,根据5个点与原点[0,0]之间的距离,由近至远排序输出距离值。 【输入形式】 5个点坐标 【输出形式】 排序后的距离值
时间: 2024-02-09 22:11:51 浏览: 70
以下是C++代码实现:
```cpp
#include <iostream>
#include <algorithm>
#include <cmath>
using namespace std;
class Point {
public:
Point(double x = 0, double y = 0) : x(x), y(y) {}
double distance() const {
return sqrt(x * x + y * y);
}
friend bool operator<(const Point &p1, const Point &p2) {
return p1.distance() < p2.distance();
}
friend ostream &operator<<(ostream &os, const Point &p) {
os << "(" << p.x << ", " << p.y << ")";
return os;
}
private:
double x, y;
};
int main() {
Point p[5];
cout << "请输入5个点的坐标:" << endl;
for (int i = 0; i < 5; ++i) {
double x, y;
cin >> x >> y;
p[i] = Point(x, y);
}
sort(p, p + 5);
cout << "按距离排序后的点的坐标为:" << endl;
for (int i = 0; i < 5; ++i) {
cout << p[i] << " 距离原点的距离为:" << p[i].distance() << endl;
}
return 0;
}
```
运行结果示例:
```
请输入5个点的坐标:
2 2
3 3
-1 -1
4 4
-2 -2
按距离排序后的点的坐标为:
(-1, -1) 距离原点的距离为:1.41421
(2, 2) 距离原点的距离为:2.82843
(-2, -2) 距离原点的距离为:2.82843
(3, 3) 距离原点的距离为:4.24264
(4, 4) 距离原点的距离为:5.65685
```
阅读全文