定义Point类描述点的坐标,可以输出坐标,可以求两个点之间的距离。 主函数声明Point类数组Point p[5],输入5个点的坐标,根据5个点与原点[0,0]之间的距离,由近至远排序输出距离值。
时间: 2024-02-18 22:59:57 浏览: 70
好的,以下是一个满足您需求的示例代码及其解释:
```cpp
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
class Point { // 定义一个名为 Point 的类
public:
float x, y; // 类的成员变量,表示二维点的坐标
void print() { // 类的成员函数,用于打印点的信息
cout << "(" << x << ", " << y << ")" << endl;
}
float distanceToOrigin() { // 类的成员函数,用于计算点到原点的距离
return sqrt(x * x + y * y);
}
};
bool cmp(const Point &a, const Point &b) { // 定义一个 cmp 函数,用于排序
return a.distanceToOrigin() < b.distanceToOrigin();
}
int main() {
Point p[5]; // 声明一个名为 p 的 Point 类型数组,包含 5 个元素
for (int i = 0; i < 5; i++) {
cout << "请输入第 " << i+1 << " 个点的坐标:";
cin >> p[i].x >> p[i].y; // 从控制台输入第 i 个点的坐标
}
sort(p, p+5, cmp); // 对数组中的元素进行排序,按照到原点的距离从小到大排序
cout << "按照与原点距离从近到远排序的结果为:" << endl;
for (int i = 0; i < 5; i++) {
cout << "第 " << i+1 << " 个点的坐标为 ";
p[i].print(); // 打印第 i 个点的信息
cout << "距离原点的距离为 " << p[i].distanceToOrigin() << endl; // 打印第 i 个点到原点的距离
}
return 0;
}
```
1. `#include <iostream>`:包含输入输出流头文件,使得程序可以使用 `cout` 和 `cin` 等输入输出函数。
2. `#include <cmath>`:包含数学函数头文件,使得程序可以使用 `sqrt` 等数学函数。
3. `#include <algorithm>`:包含算法头文件,使得程序可以使用 `sort` 等排序函数。
4. `using namespace std;`:引入命名空间 `std`,使得程序可以直接使用标准库中的函数和对象。
5. `class Point { ... };`:定义一个名为 `Point` 的类,其中 `{ ... }` 中包含类的成员变量和成员函数。
6. `public:`:指定类的成员变量和成员函数为公共的,可以被外部访问。
7. `float x, y;`:定义类的成员变量,表示二维点的坐标。
8. `void print() { ... }`:定义类的成员函数 `print`,用于打印点的信息。
9. `cout << "(" << x << ", " << y << ")" << endl;`:在控制台输出点的坐标信息,使用 `<<` 运算符将多个字符串和变量连接起来输出。
10. `float distanceToOrigin() { ... }`:定义类的成员函数 `distanceToOrigin`,用于计算点到原点的距离。
11. `return sqrt(x * x + y * y);`:返回点到原点的距离,使用数学函数 `sqrt` 计算平方根。
12. `bool cmp(const Point &a, const Point &b) { ... }`:定义一个 cmp 函数,用于排序,按照到原点的距离从小到大排序。
13. `sort(p, p+5, cmp);`:对数组中的元素进行排序,按照到原点的距离从小到大排序。
14. `for (int i = 0; i < 5; i++) { ... }`:使用 for 循环语句遍历数组中的每个元素。
15. `cin >> p[i].x >> p[i].y;`:从控制台输入第 i 个点的坐标。
16. `cout << "按照与原点距离从近到远排序的结果为:" << endl;`:在控制台输出排序结果的标题。
17. `cout << "第 " << i+1 << " 个点的坐标为 ";`:在控制台输出点的信息的标题。
18. `p[i].print();`:调用 `print` 函数打印第 i 个点的信息。
19. `cout << "距离原点的距离为 " << p[i].distanceToOrigin() << endl;`:在控制台输出第 i 个点到原点的距离。
阅读全文