C++编程合影效果(算法类,使用排序)

发布时间:2019-07-29 16:36:58

小云和朋友们去爬香山,为美丽的景色所陶醉,想合影留念。如果他们站成一排,男生全部在左(从拍照者的角度),并按照从矮到高的顺序从左到右排,女生全部在右,并按照从高到矮的顺序从左到右排,请问他们合影的效果是什么样的(所有人的身高都不同)?最多100人。输入第一行是人数n,之后有n行每行是一位朋友的描述,包括性别和身高。输出是一行表示合影的身高排列,由空格隔开。(C++基础题)

输入第一行是人数n,之后有n行每行是一位朋友的描述,包括性别和身高;输出是一行表示合影的身高排列,由空格隔开。

若输入:6 

             male 1.72 

             male 1.78 

             female 1.61

             male 1.65

             female 1.70

             female 1.56

则应该输出:1.65 1.72 1.78 1.70 1.61 1.56

请给出程序(注:硬顶要用图片上的排序)

推荐回答

#include<bits/stdc++.h>

using namespace std;

int main()

{

    double a[100],b[100];

    int n,k=0,f=0;

    string s;

    double t,m;

    cin>>n;

    for(int i=1;i<=n;i++)

    {cin>>s>>m;

    if(s=="male")

    {

        k++;

        b[k]=m;

    }

    else

    {

        f++;

        a[f]=m;

    }

}

for(int i=1;i<=k;i++)

for(int j=i+1;j<=k;j++)

{

    if(b[i]>b[j])

    swap(b[i],b[j]);

}

for(int i=1;i<=f;i++)

{

    for(int j=i+1;j<=f;j++)

    {

        if(a[i]<a[j])

        swap(a[i],a[j]);

    }

}

for(int i=1;i<=k;i++)

printf("%.2lf ",b[i]);

for(int i=1;i<=f;i++)

printf("%.2lf ",a[i]);

return 0;

}

以上问题属网友观点,不代表本站立场,仅供参考!