早教吧 育儿知识 作业答案 考试题库 百科 知识分享

一道C++编程题!距离排序[问题描述]给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离.输入:输入包括两行,第一行

题目详情
一道C++编程题!
距离排序
[问题描述]
给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离.
输入:
输入包括两行,第一行包含一个整数n表示点的个数,第二行包含每个点的坐标(坐标都是整数).点的坐标的范围是0到100,输入数据中不存在坐标相同的点.
输出:
对于大小为n的输入数据,输出n*(n-1)/2行格式如下的距离信息:
(x1,y1,z1)-(x2,y2,z2)=距离
其中距离保留到数点后面2位.
采用冒泡排序,快速排序,选择排序中的两种排序算法实现排序功能.
▼优质解答
答案和解析
/// test.cpp:
/// CopyRight (c) 2014 Vobile Inc.
/// Author:XiaoH
/// Created:2014-06-23
#include
#include
#include
typedef struct point {
int x,y,z;
}POINT;
typedef struct disdence {
POINT a,b;
double dst;
}PD;
double Squ(double num) {
return num * num;
}
double Distance(POINT a,POINT b) {
return sqrt(Squ(a.x - b.x) + Squ(a.y - b.y) + Squ(a.z - b.z));
}
int main() {
POINT pt[10];
PD tmp,dst[45];
int i,j,k,n,N;
printf("数据点数 :");
scanf("%d",&n);
if(n > 10) n = 10;
N = n*(n - 1)/2;
for(i = 0;i < n;i++) {
printf("点%d :",i + 1);
scanf("%d %d %d",&pt[i].x,&pt[i].y,&pt[i].z);
}
k = 0;
for(i = 0;i < n - 1;i++) {
for(j = i + 1;j < n;j++) {
dst[k].a = pt[i];
dst[k].b = pt[j];
dst[k].dst = Distance(pt[i],pt[j]);
k++;
}
}
for(i = 0;i < N - 1;i++) {
k = i;
for(j = i + 1;j < N;j++) {
if(dst[k].dst < dst[j].dst)
k = j;
}
if(k != i) {
tmp = dst[k];
dst[k] = dst[i];
dst[i] = tmp;
}
}
for(i = 0; i < N; i++) {
printf("(%3d,%3d,%3d) -- ",dst[i].a.x,dst[i].a.y,dst[i].a.z);
printf("(%3d,%3d,%3d) :",dst[i].b.x,dst[i].b.y,dst[i].b.z);
printf("%.2lf\n",dst[i].dst);
}
return 0;
}
看了 一道C++编程题!距离排序[...的网友还看了以下:

我们把两个三角形的中心之间的距离叫做重心距,在同一个平面内有两个边长相等的等边三角形,如果当它们的  2020-04-11 …

立体几何的一道题.三角形ABC中,AB=15,角BCA=120度,若三角形平面外一点P到A、B、C  2020-05-21 …

把一等边三角形绕它的三条中线的交点旋转一周和原来的图形重合几次如题,再补充一题:直线L1,L2,L  2020-06-02 …

三角形已知三边,外接圆圆心到三边的距离怎么求了?就是已知三角形的三边,怎么才能求出外接圆圆心到三边  2020-08-01 …

某条高速公路上依次排列着abc三个加油站a到b的距离为一百二十千米一道希的距离也是一百二十千米的别  2020-08-04 …

由三个已知点坐标,确定另外一个点的坐标,已知三个点坐标(x1,y1),(x2,y2),(x3,y3)  2020-10-31 …

海口铁人三项比赛中,有一个叫做70.3铁人三项的项目,距离是大铁的一半,想问下,这个70.我知道啦,  2020-11-20 …

如图所示,沿平直跑道有间距相等的三个飞机跑道灯塔A、B和C.假想有一架飞机沿AC方向以接近光速前行,  2020-11-25 …

在某国道道口,有一个三角形的道路交叉点,根据上级的审批,在这一地带只允许建立一处加油站,且到三个路口  2020-12-05 …

物理急详细啊假定有三个完全相同的,质量均为M的小星体,正好位于彼此相距为r的等边三角形的三个顶点上,  2020-12-16 …