C++编写代码,n个点的坐标,按照x坐标从小到大进行排序,并输出序号
时间: 2024-03-06 21:51:29 浏览: 279
以下是一个 C++ 代码,可以实现这个功能:
```c++
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
struct Point {
int x, y, index;
};
bool cmp(const Point& p1, const Point& p2) {
if (p1.x != p2.x) {
return p1.x < p2.x;
}
else {
return p1.y < p2.y;
}
}
int main() {
int n;
cin >> n;
vector<Point> points(n);
for (int i = 0; i < n; i++) {
cin >> points[i].x >> points[i].y;
points[i].index = i + 1;
}
sort(points.begin(), points.end(), cmp);
for (int i = 0; i < n; i++) {
cout << points[i].index << endl;
}
return 0;
}
```
这个程序首先读取输入的点的数量 n,然后使用一个 `vector` 存储每个点的坐标,并将其表示为一个 `Point` 结构体,其中 `index` 表示这个点的序号(从 1 开始计数)。
然后,程序定义一个 `cmp` 函数用于比较两个点的大小。如果两个点的 x 坐标不同,则按照 x 坐标从小到大排序;如果 x 坐标相同,则按照 y 坐标从小到大排序。
最后,程序使用 C++ 的内置排序函数 `sort()` 对这些点进行排序,并使用一个循环遍历排序后的点列表,并输出每个点的序号。
希望这个代码可以帮助你!
阅读全文