C++ 计算五个点中距离最近的两点
C++ 计算五个点中距离最近的两点
问题描述: 输入五个点的坐标(float型),输出哪两个点之间的距离最近。
输入格式: float型五个点的坐标,以空格分隔。
输出格式: 最近的两个点坐标及距离,格式为:'点(x1, y1)和点(x2, y2)的距离最近,距离为 d'。
样例输入:
1.5 3 4 2.5 2 1 3 1.5 6 5
样例输出:
'点(2,1)和点(3,1.5)的距离最近,距离为 1.12'
思路: 枚举每一对点,计算距离,取最小值即可。
代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main() {
float x[5], y[5];
for (int i = 0; i < 5; i++) {
cin >> x[i] >> y[i];
}
int min_i = 0, min_j = 1;
float min_dist = sqrt(pow(x[0] - x[1], 2) + pow(y[0] - y[1], 2));
for (int i = 0; i < 5; i++) {
for (int j = i + 1; j < 5; j++) {
float dist = sqrt(pow(x[i] - x[j], 2) + pow(y[i] - y[j], 2));
if (dist < min_dist) {
min_dist = dist;
min_i = i;
min_j = j;
}
}
}
cout << "点(" << x[min_i] << ',' << y[min_i] << ")和点(" << x[min_j] << ',' << y[min_j] << ")的距离最近,距离为 " << min_dist << endl;
return 0;
}
代码解释:
- 首先读取五个点的坐标并存储在数组
x和y中。 - 初始化
min_i,min_j和min_dist,分别代表距离最近的两个点的索引和它们之间的距离。 - 使用两层循环遍历所有点对,计算每对点的距离并与
min_dist比较,更新min_i,min_j和min_dist。 - 最后输出距离最近的两个点的坐标和距离。
原文地址: https://www.cveoy.top/t/topic/os8J 著作权归作者所有。请勿转载和采集!