问题标题: 酷町堂:5517 考试成绩统计

0
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<algorithm>

using namespace std;

struct node{

    string name;

    double a,b,c,d;

    double sum(){

    return (double)(a+b+c+d)*1.0/4;

    }

}a[10005];

bool cmp(node x,node y){

    return x.sum()>y.sum();

}

int n;

int main(){

    cin>>n;

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

        cin>>a[i].name>>a[i].a>>a[i].b>>a[i].c>>a[i].d;

    }

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

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

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

    }

    return 0;

}

0分


0
已采纳
丁博扬
丁博扬
中级天翼
中级天翼
  • double sum(){
  • return (yi+er+san+si)/4;
  • }
  • 以上在struct函数里
  • 得定义一个string类型的名字,int类型的第一题,第二题,第三题,第四题
  • if(x.sum()!=y.sum()){
  • return 平均分从大到小//x.sum()>y.sum()
  • }
  • return 按照顺序排//x.id<y.id
  • int main(){
  • for循环输入名字第一题,第二题,第三题,第四题
  • a[i].id=i;记录下标,按输入顺序输出;
  • sort(a+1,a+n+1,cmp);
  • for输出名字;
  • }
  • 记得别往了加头文件
  • 我好久没上问答了,求求你,望采纳
  • 结构体 chengji{
  • 字符串 name;
  • 实数 yi,er,san,si;
  • 整数 id;
  • 实数 sum(){
  • 返回 (yi+er+san+si)/4;
  • }
  • }a[11000];
  • 布尔 cmp(chengji x,chengji y){
  • 如果(x.sum()!=y.sum()){
  • 返回 x.sum()>y.sum();
  • }
  • 返回 x.id<y.id;
  • }

ps:这题我今天刚刷过

打字不易,望采纳

0
我要回答