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

一道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++编程题!距离排序[...的网友还看了以下:

用"是马丹飞"这4个字编字迷,要有诗意,要难一点的.编的好追加分..  2020-05-17 …

将含有100个结点的完全二叉树从根这一层开始,每层从左到右依次对结点编号,根结点的编号为 1,编号  2020-05-24 …

将含有100个节点的完全二叉树从根这一层开始,每层从左到右依次对节点编号,根节点的编号为1,编号  2020-05-24 …

对二叉树从1开始进行连续编号,要求每个结点的编号大于其左右孩子的编号,同一结点的左右孩子中,其  2020-05-26 …

简单数据结构求详解9.将含有80个结点的完全二叉树从根这一层开始,每层从左到右依次对结点编号,根结  2020-06-27 …

高度为h的满m叉树中编号为i的结点的双亲结点的编号为何在m叉树中结点i的第一个子女的编号为j=(i  2020-07-08 …

需要C++版本的亲~~~~用无向网表示学校的校园景点平面图,图中顶点表示主要景点,存放景点的编号、  2020-08-01 …

对二叉树的结点从1开始进行连续编号,要求每个结点的编号小于其左、右孩子的编号,同一结点的左右孩子中,  2020-11-03 …

数据结构问题,怎么做,要详解!)对二叉树的结点从1开始进行连续编号,要求每个结点的编号大于其左、右孩  2020-11-03 …

艺术生能不能报考重点大学我是浙江一个高三的学生,读文科的,现在是艺术生了.当时的主要目的是想考取浙江  2020-11-06 …