• 初识结构体


    Q:距离排序

    总时间限制: 1000ms 内存限制: 65536kB

    描述

    给出三维空间中的n个点(不超过10个),求出n个点两两之间的距离,并按距离由大到小依次输出两个点的坐标及它们之间的距离。

    输入

    输入包括两行,第一行包含一个整数n表示点的个数,第二行包含每个点的坐标(坐标都是整数)。点的坐标的范围是0到100,输入数据中不存在坐标相同的点。

    输出

    对于大小为n的输入数据,输出n*(n-1)/2行格式如下的距离信息:

    (x1,y1,z1)-(x2,y2,z2)=距离 其中距离保留到数点后面2位。

    (用cout输出时保留到小数点后2位的方法:cout<<fixed<<setprecision(2)<<x)

    样例输入

    4

    0 0 0 1 0 0 1 1 0 1 1 1

    样例输出

    (0,0,0)-(1,1,1)=1.73

    (0,0,0)-(1,1,0)=1.41

    (1,0,0)-(1,1,1)=1.41

    (0,0,0)-(1,0,0)=1.00

    (1,0,0)-(1,1,0)=1.00

    (1,1,0)-(1,1,1)=1.00

    提示

    用cout输出时保留到小数点后2位的方法:cout<<fixed<<setprecision(2)<<x

    注意:

    冒泡排序满足下面的性质,选择排序和快速排序(qsort或sort)需要对下面的情况进行额外处理 使用冒泡排序时要注意边界情况的处理,保证比较的两个数都在数组范围内 。

    S:

    #include <stdio.h>
    #include<math.h>
    struct point
    {
        int x,y,z;
    };
    struct dist
    {
        struct point A,B;
        double len;
    };
    int main()
    {
        int n;
        int flag;
        int i,j;
        int t=0;
        struct point a[12];
        struct dist b[51],c;
        scanf("%d",&n);
        for(i=0;i<n;i++)
        {
            scanf("%d%d%d",&a[i].x,&a[i].y,&a[i].z);
        }
        for(i=0;i<n-1;i++)
        {
            for(j=i+1;j<n;j++)
            {
                b[t].A=a[i];
                b[t].B=a[j];
                b[t].len=sqrt((a[i].x-a[j].x)*(a[i].x-a[j].x)+
                              (a[i].y-a[j].y)*(a[i].y-a[j].y)+
                              (a[i].z-a[j].z)*(a[i].z-a[j].z));
                t++;
            }
        }
        for(i=1;i<t;i++)
        {
        	flag=1;
            for(j=0;j<t-i;j++)
            {
            	if(b[j].len<b[j+1].len)
            	{
    				flag=0;
    	            c=b[j];
    	            b[j]=b[j+1];
    	            b[j+1]=c;
            	}
            }
            if(flag) break;
        }
        for(i=0;i<t;i++)
        {
            printf("(%d,%d,%d)-(%d,%d,%d)=%.2lf
    ",b[i].A.x,b[i].A.y,b[i].A.z,b[i].B.x,b[i].B.y,b[i].B.z,b[i].len);
        }
        return 0;
    }
    
  • 相关阅读:
    delete与double free
    OpenCV(1)——基础数据结构CvMat
    防止表单自动提交_随笔2012年5月16日
    Flex 学习笔记学习资料
    当析构函数遇到多线程 ── C++ 中线程安全的对象回调
    .NET Core2.0+MVC 用session,cookie实现的sso单点登录
    TreeView中右击直接获取节点的方法
    webservice 远程调试配置
    数组,集合 转成DataTable 方法
    String类中几个简单的常用方法
  • 原文地址:https://www.cnblogs.com/LegendLa/p/4178722.html
Copyright © 2020-2023  润新知