
输入n个平面坐标系中的点,将这些点按照距离原点从近到远的顺序排序输出。
C++结构体运用
Class Point{ };
应该如何操作
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
class point {
int x;
int y;
public:
point(int _x = 0, int _y = 0) :x(_x), y(_y) {}
double distance(const point& p)const {
int dx = p.x - x;
int dy = p.y - y;
double res = sqrt(dy * dy + dx * dx);
return res;
}
int getX()const {
return x;
}
int getY()const {
return y;
}
};
int main()
{
int n;
cin >> n;
vector<point> points;
for (int i = 0; i < n; i++) {
int x, y;
cin >> x >> y;
points.push_back({ x,y });
}
sort(points.begin(), points.end(), [](const point& p1, const point& p2) {
auto l1 = p1.distance(point());
auto l2 = p2.distance(point());
return l1 < l2;
});
for (auto p : points) {
cout <<"("<<p.getX() << "," << p.getY() << ")";
}
}