采用空间直角坐标系。 请定义恰当的恒星结构体类型,以及计算两个恒星之间的距离的函数。 输入N个恒星的三维坐标,存储在结构体数组中。输出彼此距离最近的一对恒星之间的距离,小数点后必须保留2位有效数字(四舍五入),不足补零。
时间: 2024-04-30 21:20:31 浏览: 127
以下是一个示例代码,定义了一个名为Star的结构体类型,包含三个float型成员变量x、y、z,分别表示恒星在空间直角坐标系中的三个坐标值。此外还定义了一个计算两个星球距离的函数dist,使用勾股定理计算两个点之间的距离,返回值为float类型。
```c++
#include <iostream>
#include <cmath>
#include <iomanip>
using namespace std;
struct Star{
float x;
float y;
float z;
};
float dist(Star a, Star b){
float dx = a.x - b.x;
float dy = a.y - b.y;
float dz = a.z - b.z;
return sqrt(dx*dx + dy*dy + dz*dz);
}
int main(){
int n;
cin >> n;
Star stars[n];
for(int i = 0; i < n; i++){
cin >> stars[i].x >> stars[i].y >> stars[i].z;
}
float min_dist = FLT_MAX;
for(int i = 0; i < n-1; i++){
for(int j = i+1; j < n; j++){
float d = dist(stars[i], stars[j]);
if(d < min_dist){
min_dist = d;
}
}
}
cout << fixed << setprecision(2) << min_dist << endl;
return 0;
}
```
代码中使用了FLT_MAX常量来初始化最小距离,保证其初值一定大于任何可能的距离。最后输出时使用了fixed和setprecision函数控制输出精度为两位小数。
阅读全文