问题标题: 酷町堂:4572 年龄排序 没输出~

0
0
已解决
谭迪元
谭迪元
资深光能
资深光能
题目描述 Description
小明帮老师统计班上同学的出生日期,并根据年龄给同学们排序。统计的出生日期格式为六位数字,例如,某同学是1998-9-30日出生的,那么统计的格式就是98 9 30。请你编写一个程序,请按照他们年龄从小到大排序,年龄相同的按照输入的顺序先后来排序。

输入描述 Input Description
n+1行,第一行一个整数n,表示统计的人数
接下来n行,每行一个字符串和三个二位整数组成的数(0省略),中间通过空格隔开

输出描述 Output Description
n行,每行一个字符串,表示排序后姓名

样例输入 Sample Input
3
xiaoming 98 9 30
xiaohong 97 7 20
xiaohua 98 9 29
样例输出 Sample Output
xiaoming
xiaohua
xiaohong
数据范围及提示 Data Size & Hint
0<n<=100
所有同学的出生日期都在2000年1月1号之前

没输出的代码:

#include<bits/stdc++.h>

using namespace std;

struct P{

    string name;

    int n,y,r;

}a[105];

bool cmp(P x,P v){

    if(x.n!=v.n){

        return x.n>v.n;

    }

    if(x.y!=v.y){

        return x.y>v.y;

    }

    return x.r>v.r;

}

int main(){

    int m;

    cin>>m;

    for(int i=1;i<=m;i++){

        cin>>a[i].n>>a[i].y>>a[i].r;

    }

    sort(a+1,a+m+1,cmp);

    for(int i=1;i<=m;i++){

        cout<<a[i].name<<endl;

    }

    return 0;

}

 

谭迪元在2021-09-27 20:34:33追加了内容


#include<bits/stdc++.h>

using namespace std;

struct P{

    string name;

    int n,y,r;

}a[105];

bool cmp(P x,P v){

    if(x.n!=v.n){

        return x.n>v.n;

    }

    if(x.y!=v.y){

        return x.y>v.y;

    }

    return x.r>v.r;

}

int main(){

    int m;

    cin>>m;

    for(int i=1;i<=m;i++){

        cin>>a[i].n>>a[i].y>>a[i].r;

    }

    sort(a+1,a+m+1,cmp);

    for(int i=1;i<=m;i++){

        cout<<a[i].name<<endl;

    }

    return 0;

}

 

谭迪元在2021-09-27 20:36:51追加了内容

???


0
已采纳
汪一言
汪一言
高级守护
高级守护

核心代码: 

struct P{
    string name;
    int y,m,d;
    int id;
}a[10005];
bool cmp(P a,P b){
    if(a.y!=b.y){
        return a.y>b.y;
    }else if(a.m!=b.m){
        return a.m>b.m;
    }else if(a.d!=b.d){
        return a.d>b.d;
    }
    return a.id<b.id;
}

    int n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].name>>a[i].y>>a[i].m>>a[i].d;
        a[i].id=i;
    }
    sort(a+1,a+1+n,cmp);
   for(int i=1;i<=n;i++){
       cout<<a[i].name<<endl;
   }

望采纳!

0
朱小川
朱小川
缔造者
缔造者

在输入循环中加一句,

a[i].sum=i;

(sum得定义一下)

0
李奕歌
李奕歌
初级天翼
初级天翼
struct sr{
    string name;
    long long y;
    int m,d,id;
};
sr a[10005];
bool cmp(sr x,sr y){
    if(x.y!=y.y) return x.y>y.y;
    if(x.m!=y.m) return x.m>y.m;
    if(x.d!=y.d) return x.d>y.d;
    return x.id<y.id;
}

 

0
丁博扬
丁博扬
中级天翼
中级天翼

如果我没记错的话,好像还有输入一个名字吧

0
0
我要回答