用C语言,找出一点到两个已知点群中距离最近的一个点

已知空间两个点群分别有5个点,10个点坐标以数组方式输入,就是x[10][3]这种,坐标自定,然后给出另外一个点A,找出与这个点距离最近的一点,然后表示出点A属于距离最近... 已知空间两个点群分别有5个点,10个点坐标以数组方式输入,就是x[10][3]这种,坐标自定,然后给出另外一个点A,找出与这个点距离最近的一点,然后表示出点A属于距离最近的点所在的点群。
谢谢!由于本人是新手,请详细编写!
请在程序中写出printf,提示什么时候输入什么数据
展开
 我来答
宁波祝老师
推荐于2016-07-06 · TA获得超过849个赞
知道小有建树答主
回答量:455
采纳率:100%
帮助的人:290万
展开全部
#include<stdio.h>
#include<math.h>
void main()
{
int a[11][3],i,j,dis[10],d1,d2,h1,h2,d,h;
double D;
printf("请输入第一点群的5个点坐标:\n");
for(i=0;i<5;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("请输入第二点群的5个点坐标:\n");
for(i=5;i<10;i++)
for(j=0;j<3;j++)
scanf("%d",&a[i][j]);
printf("\n输入目标点坐标\n");
for(j=0;j<3;j++)
scanf("%d",&a[10][j]);
for(i=0;i<10;i++)
dis[i]=(a[i][0]-a[10][0])*(a[i][0]-a[10][0])+(a[i][1]-a[10][1])*(a[i][1]-a[10][1])+(a[i][2]-a[10][2])*(a[i][2]-a[10][2]);
d1=dis[0];h=0;
for(i=1;i<5;i++)
{
if (dis[i]<d1)
d1=dis[i],h1=i;
}
d2=dis[5];h2=5;
for(i=6;i<10;i++)
{
if (dis[i]<d2)
d2=dis[i],h2=i;
}
if(d1==d2)
{
printf("最近点距离目标点距离为:%f\n",sqrt(d1));
printf("2个点群中均存在距离目标点最近的点\n");
}
else
{
if(d1>d2)
d=d2,h=h2;
else
d=d1,h=h1;
D=sqrt(d);
printf("最近点距离目标点距离为:%f\n",D);
if(h<5)
printf("最近点属于第一点群\n");
else
printf("最近点属于第二点群\n");
}
}
chenhqwall
2008-11-06 · TA获得超过172个赞
知道小有建树答主
回答量:370
采纳率:0%
帮助的人:197万
展开全部
#include<stdio.h>
#include<math.h>
void main()
{int shuju[10][3],i,j;
double distance[10];
static double d;
for(i=0;i<=9;i++)
for(j=0;j<=2;j++)
scanf("%d",&shuju[i][j]);
for(i=0;i<=9;i++)
distance[i]=sqrt(shuju[i][0]*shuju[i][0]+shuju[i][1]*shuju[i][1]+shuju[i][2]*shuju[i][2]);
d=distance[0];
for(i=1;i<=9;i++)
{if (distance[i]<d)
d=distance[i];};
printf("%f",d);
}
应该能够看懂吧!题目还是很简单,c语言在开始的时候多看看书就可以了!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zzzhiv
2008-11-06 · TA获得超过5101个赞
知道大有可为答主
回答量:1万
采纳率:0%
帮助的人:3978万
展开全部
题很简单,但是写出高效的算法就要想想了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式