永发信息网

比较一个空间点与两群点的重心的距离,用c语言编

答案:4  悬赏:60  手机版
解决时间 2021-03-26 00:29
  • 提问者网友:捧腹剧
  • 2021-03-25 10:48
比较一个空间点与两群点的重心的距离,用c语言编
最佳答案
  • 五星知识达人网友:廢物販賣機
  • 2021-03-25 11:59
#include

void main()
{
int n1,n2,i;
float x1,y1,z1;
float x2,y2,z2;
float x,y,z;
dboule d1,d2;

printf("群1有多少个点:");
scanf("%d",&n1);
printf("坐标分别是多少?\n");
for(x1=y1=z1=0,i=0;i{
scanf("%f%f%f",&x,&y,&z);
x1+=x;y1+=y;z1+=z;
}
x1=x1/n1;y1=y1/n1;z1=z1/n1;
printf("群1的重心是(%f,%f,%f)\n",x1,y1,z1);

printf("群2有多少个点:");
scanf("%d",&n2);
printf("坐标分别是多少?\n");
for(x2=y2=z2=0,i=0;i{
scanf("%f%f%f",&x,&y,&z);
x2+=x;y2+=y;z2+=z;
}
x2=x2/n2;y2=y2/n2;z2=z2/n2;
printf("群2的重心是(%f,%f,%f)\n",x2,y2,z2);

printf("请输入已知点的坐标:");
scanf("%f%f%f",&x,&y,&z);

d1=(x-x1)*(x-x1)+(y-y1)*(y-y1)+(z-z1)*(z-z1);
d2=(x-x2)*(x-x2)+(y-y2)*(y-y2)+(z-z2)*(z-z2);
if(d1=d2)
{
printf("已知点到两个群的重心相等!\n");
}
else if(d1{
printf("已知点到群1的重心近!\n");
}
else
{
printf("已知点到群2的重心近!\n");
}
}
全部回答
  • 1楼网友:拾荒鲤
  • 2021-03-25 15:30
那个已知点什么时候输入呢?
  • 2楼网友:空山清雨
  • 2021-03-25 12:30

#include
#include
#include
#define PointInit(p) p[0]=0.0,p[1]=0.0,p[2]=0.0
#define PointAdd(p0,p1) p0[0]+=p1[0],p0[1]+=p1[1],p0[2]+=p1[2]
#define PointDiv(p,n) p[0]/=n,p[1]/=n,p[2]/=n
#define PointDiff(p0,p1) (p0[0]-p1[0])*(p0[0]-p1[0])+(p0[1]-p1[1])*(p0[1]-p1[1])+(p0[2]-p1[2])*(p0[2]-p1[2])
int main(int argc, char* argv[]){
double g0[3],g1[3],t[3];
int n,m;
PointInit(g0);PointInit(g1);PointInit(t);

printf("输入点群1内点的个数:");
for(assert(scanf("%d",&n)==1),printf("输入点:\n"),m=n;n>0;n--,PointAdd(g0,t))
assert(scanf("%lf %lf %lf",&t[0],&t[1],&t[2])==3);
PointDiv(g0,m);

printf("输入点群2内点的个数:");
for(assert(scanf("%d",&n)==1),printf("输入点:\n"),m=n;n>0;n--,PointAdd(g1,t))
assert(scanf("%lf %lf %lf",&t[0],&t[1],&t[2])==3);
PointDiv(g1,m);

printf("点群1重心:%f,%f,%f\n点群2重心:%f,%f,%f\n",g0[0],g0[1],g0[2],g1[0],g1[1],g1[2]);
for(printf("\n请输入测试距离的点:");scanf("%lf %lf %lf",&t[0],&t[1],&t[2])==3;)
{
double d0=PointDiff(g0,t),d1=PointDiff(g1,t);
if(d0==d1) printf("与两个点群重心的距离相等\n");
else if(d0>d1) printf("与点群2重心的较近\n");
else printf("与点群1重心的较近\n");
}
return 0;
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯