问题标题: 酷町堂:5517怎么写?

1
0
已解决
郑思予
郑思予
新手光能
新手光能

5517   考试成绩统计经验值:800

题目描述 Description

酷町堂举办了一次文件操作模拟赛,共有4道题目,现在要按照4道题目的平均分从高到低排序。如果分数相同,保持在输入中的顺序输出。

要求:求平均分要定义成一个返回值为double类型的结构体函数。

输入描述 Input Description

第一行,一个整数n,表示人数
接下来n行,每行有准考证号、第一题分数、第二题分数、第三题分数、第四题分数,准考证号是一个5位的字符串,由字母和数字构成

输出描述 Output Description

n行,每行一个排序后的准考证号

样例输入 Sample Input

5 BM001 100 0 0 100 BM002 100 20 80 80 BM003 100 100 0 100 BM004 100 100 100 0 BM005 100 100 100 100

样例输出 Sample Output

BM005 BM003 BM004 BM002 BM001

数据范围及提示 Data Size & Hint

n<=10000

#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
struct node{
    string zkzh;
    double zf;
    double a,b,c,d;
};
node a[10005];
int n;
bool cmp(node x,node y){
    return x.zf >y.zf ;
}
int main(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i].zkzh>>a[i].a>>a[i].b>>a[i].c >>a[i].d;
        a[i].zf =(a[i].a+a[i].b+a[i].c+a[i].d)/4;
    }
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++){
        cout<<a[i].zkzh <<endl;
    }
    return 0;
}

0分代码,哪里写错了(思路也可以)。


0
已采纳
沈峻宇
沈峻宇
资深天翼
资深天翼

熬好,发作业题来问

沈峻宇在2021-01-24 16:38:20追加了内容

我可以教你,但是请等5分钟

沈峻宇在2021-01-24 16:41:09追加了内容

首先,你没有题目要求的函数,

这样你会很麻烦

 

沈峻宇在2021-01-24 16:50:56追加了内容

return x.编号<y.编号;(cmp函数内)

而且,你要知道,如果平均分相同,要按输入顺序来!加上我上面的代码,应该就能AC。

沈峻宇在2021-01-24 16:51:41追加了内容

@郑思予 

望采纳

 

0
汪恺恒
汪恺恒
中级启示者
中级启示者

题目说:如果分数相同,保持在输入中的顺序输出。

你最好加一条判断

还有,你的数组和变量重名了(第18行)

我要回答