
c语言 求空间中最远的两个点距离(函数参数用指针)
在三维的立体空间中有n个点,每个点有三个坐标(x,y,z),求这些点中相距最远的两个点的之间的距离。要求编写一个函数用于求两点间的距离。该函数参数用指针。输入要求:首先输...
在三维的立体空间中有n个点,每个点有三个坐标(x,y,z),求这些点中相距最远的两个点的之间的距离。要求编写一个函数用于求两点间的距离。该函数参数用指针。
输入要求:首先输入一个正整数n,代表有n个点,接下来有n行的数据输入,每行3个数,代表每个点的坐标。n<10
输出要求:输出相距最远的两点间的距离,四舍五入保留两位有效数字 展开
输入要求:首先输入一个正整数n,代表有n个点,接下来有n行的数据输入,每行3个数,代表每个点的坐标。n<10
输出要求:输出相距最远的两点间的距离,四舍五入保留两位有效数字 展开
1个回答
展开全部
你这个题的数据量很小(n<10),所以完全可以暴力求解
#include <stdio.h>
#include <math.h>
typedef struct point
{
double x, y, z;
}Point;
double GetDistance(const Point *a, const Point *b)
{
return sqrt( (a->x-b->x)*(a->x-b->x)+
(a->y-b->y)*(a->y-b->y)+
(a->z-b->z)*(a->z-b->z) );
}
int main()
{
int i, j, n;
Point p[10];
double res = 0, distance = 0;
scanf("%d", &n);
for(i = 0; i < n; i++)
scanf("%lf %lf %lf", &p[i].x, &p[i].y, &p[i].z);
for(i = 0; i < n-1; i++)
{
for(j = i+1; j < n; j++)
{
distance = GetDistance(&p[i], &p[j]);
res = distance>res ? distance:res;
}
}
printf("%.2lf\n", res);
return 0;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询