平面上有n个点,给定坐标求那两个点距离最近结构体
时间: 2024-03-23 15:36:43 浏览: 176
可以定义一个结构体表示二维平面上的点,包含两个成员变量x和y表示点的坐标。然后使用一个函数来计算任意两个点之间的距离,最后遍历每两个点之间的距离,找到距离最近的两个点即可。
代码示例:
```c++
#include <iostream>
#include <cmath>
using namespace std;
struct Point {
double x;
double y;
};
double distance(Point a, Point b) {
double dx = a.x - b.x;
double dy = a.y - b.y;
return sqrt(dx*dx + dy*dy);
}
int main() {
int n;
cout << "请输入点的个数n:";
cin >> n;
Point* points = new Point[n];
cout << "请输入每个点的坐标:" << endl;
for(int i = 0; i < n; i++) {
cin >> points[i].x >> points[i].y;
}
double minDist = distance(points[0], points[1]);
int minI = 0, minJ = 1;
for(int i = 0; i < n; i++) {
for(int j = i+1; j < n; j++) {
double dist = distance(points[i], points[j]);
if(dist < minDist) {
minDist = dist;
minI = i;
minJ = j;
}
}
}
cout << "距离最近的两个点是(" << points[minI].x << "," << points[minI].y << ")和("
<< points[minJ].x << "," << points[minJ].y << "),它们之间的距离为" << minDist << endl;
delete[] points;
return 0;
}
```
注意:上述代码中使用了动态内存分配,需要在程序结束前手动释放空间。
阅读全文