题目内容:有一些班级的学生需要按绩点计算并排名。每门课的成绩只有在60分以上(含),才予以计算绩点。课程绩点的计算公式为:(课程成绩-50)÷10×学分数。一个学生的总绩点为其所有课程绩点总和除以10.

输入描述:输入数据中含有一些班级(数量≤20)。第一行为班级数量。每个班级的第一行数据为n(≤10),表示该班级共有n门课程。每个班级的第二行数据为a1,a2,a3,……,an,表示每门课程的学分。班级数据中的第三行数据为一个整数m(≤50),表示本班级有m个学生;班级数据接下去有m行对应m个学生数据;每行学生数据中的第一个为字串s1(s1中间没有空格),表示学生姓名,后面跟有n个整数s1,s2,s3,……sn,表示该学生各门课程的成绩(0≤si ≤100).

输出描述:以班级为单位输出各个学生按绩点分从大到小的排名。如果绩点分相同,则按学生名字的ASCII串值从小到大排名。每个班级的排名输出之前应先给出一行,描述班级序号“class #:”(#表示班级序号),班级之间应空出一行。排名时,每个学生占一行,列出名字和总绩点。学生输出宽度为10个字符,左对齐,在空出一格后列出总绩点。

题目分析:

(1)定义一个正整数作为班级数;定义一个正整数作为课程数量;定义一个double变量作为学分;定义一个double型向量容器存储学分;定义一个正整数作为班级人数;定义一个结构体存储学生的名称和总绩点;定义一个字符串变量作为学生名称;定义一个元素为结构体的向量容器存储最终学生名称和总绩点

(2)从键盘读入班级数

(3)对每个班级,从键盘读入课程数量,再读入每门课程的学分,并将每个学分插入到向量容器中

(4)对每个班级中的每个学生,从键盘读入学生名称,存储在结构体中

(5)对每个班级中的每个学生的每门课程,读入成绩,若成绩小于60,则继续读入下一门课程的成绩,否则计算该课程的绩点

(6)对每个班级中的每个学生,计算其总绩点,存储在结构体中,并插入向量容器

(7)编写比较函数,若总绩点不相等则按总绩点从大到小的顺序返回,若总绩点相等则按学生名字从小到大的顺序返回

(8)将向量容器中的元素按比较函数排序

(9)对向量容器中的每个元素,格式化输出其信息

参考代码:

#include <fstream>
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
#include <iomanip> using namespace std; struct student
{
string s;
double d;
}; bool myComp(const student &s1,const student &s2)
{
if(s1.d!=s2.d) return s1.d>s2.d;
if(s1.s!=s2.s) return s1.s<s2.s;
} int main(int argc,char * argv[])
{
int n;
int c;
double xf;
vector<double> vxf;
int p;
string name;
double score;
student xs;
vector<student> vxs;
cin>>n;
for(int i=0;i<n;i++)
{
cin>>c;
for(int j=0;j<c;j++)
{
cin>>xf;
vxf.push_back(xf);
}
cin>>p;
for(int k=0;k<p;k++)
{
cin>>name;
xs.s=name;
xf=0.0;
for(int m=0;m<c;m++)
{
cin>>score;
if(score<60) continue;
xf=xf+(score-50)/10*vxf[m];
}
xs.d=xf/10;
vxs.push_back(xs);
}
cout<<(i?"\n":"");
cout<<"Class "<<i+1<<":"<<endl;
sort(vxs.begin(),vxs.end(),myComp);
for(vector<student>::iterator it=vxs.begin();it<vxs.end();it++)
{
cout<<fixed<<setprecision(2);
cout<<left<<setw(11);
cout<<(*it).s<<(*it).d<<endl;
}
vxf.clear();
vxs.clear();
}
system("pause");
return 0;
}

运行结果:

C++实现按绩点排名的更多相关文章

  1. 2015腾讯暑期实习生 Web前端开发 面试经历

    [2015腾讯暑期实习生 Web前端开发 面试经历] 好吧,首先声明,我被刷了,应该是跪在二面 微信查到的面试状态一直呈现复试中 .. 整整四天了.. 看来是没希望了 不过也是一次经历,记录一下还是可 ...

  2. 华南师大 2017 年 ACM 程序设计竞赛新生初赛题解

    题解 被你们虐了千百遍的题目和 OJ 也很累的,也想要休息,所以你们别想了,行行好放过它们,我们来看题解吧... A. 诡异的计数法 Description cgy 太喜欢质数了以至于他计数也需要用质 ...

  3. 404 Note Found队 福大助手项目测评

    目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ...

  4. BATA冲刺准备

    目录 第一部分 调研,评测 福大助手的bug IOS端 Android端 福大助手结构体系的思维导图 为什么开发人员没有发现这个bug 假设团队开发这款app,应注意哪些方面(架构.部署运维.微服务等 ...

  5. 计算机保研,maybe this is all you need(普通双非学子上岸浙大工程师数据科学项目)

    写在前面 9.28接收了拟录取通知,也终究是尘埃落定了,我人生的又一个阶段也终于结束.面对最终录取结果,或多或少会有所遗憾,但也还是基本达到了预期的目标了. 作为在今年严峻的保研形势下幸存的我,一直想 ...

  6. 【微信SEO】公众号也能做排名?

    [写于2016年8月] 最近,微信团队发出一则公告,开放公众号运营者一年内更改公众号名一次,这对不少名字起的奇葩名字(包括dkplus)的公众号来说是一件好事. 为什么说是好事呢?公众号名字直接关联到 ...

  7. 你真的会玩SQL吗?表表达式,排名函数

    你真的会玩SQL吗?系列目录 你真的会玩SQL吗?之逻辑查询处理阶段 你真的会玩SQL吗?和平大使 内连接.外连接 你真的会玩SQL吗?三范式.数据完整性 你真的会玩SQL吗?查询指定节点及其所有父节 ...

  8. BZOJ 1862: [Zjoi2006]GameZ游戏排名系统 [treap hash]

    1862: [Zjoi2006]GameZ游戏排名系统 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1318  Solved: 498[Submit][ ...

  9. MySQL 排名统计

    select actor_id,@curr_cnt:=cnt as cnt , ,@rank) as rank, @prev_cnt:=@curr_cnt as dummy from( select ...

随机推荐

  1. nyoj 105 九的余数

    点击打开链接 九的余数 时间限制:3000 ms  |  内存限制:65535 KB 难度:3 描述 现在给你一个自然数n,它的位数小于等于一百万,现在你要做的就是求出这个数整除九之后的余数. 输入 ...

  2. MPlayer在ARM上的移植(S5PV210开发板)

    MPlayer 1.0已经把大部分解码库都自带了,如ffmpeg,但是自带的音频库在S5PV210下效果非常不好.换成使用libmad效果不错.因此MPlayer 在ARM-Linux的最简单的移植只 ...

  3. css选择器nth-child()和nth-of-type()的应用

    <style> .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth- ...

  4. SparkStreaming结合Kafka使用

    spark自带的example中就有streaming结合kafka使用的案例: $SPARK_HOME/examples/src/main/scala/org/apache/spark/exampl ...

  5. winform异步进度条LongTime

    winform异步进度条LongTime,运用到回调函数 定义事件的参数类: namespace LongTime.Business { // 定义事件的参数类 public class ValueE ...

  6. OpenStack Nova 制作 Windows 镜像

    OpenStack Nova 制作 Windows 镜像   windows虚拟机ubuntuimage防火墙云计算 本贴转自http://www.vpsee.com 上次 VPSee 给 OpenS ...

  7. android L 新控件侧滑菜单DrawerLayout 使用教程

    介绍 drawerLayout是Support Library包中实现了侧滑菜单效果的控件,可以说drawerLayout是因为第三方控件如MenuDrawer等的出现之后,google借鉴而出现的产 ...

  8. CODESOFT中的圆角矩形的弧度该怎样设置?

      CODESOFT标签设计软件提供多种图形制作按钮,方便用户更为快捷的制作标签.其中就包括矩形,圆角矩形的快捷创建按钮.本文将介绍如何设置CODESOFT圆角矩形的弧度. 若有疑问可直接访问:htt ...

  9. nginx 配置.json文件直接访问

    不要弹出下载 配置nginx.conf http { include mime.types; default_type application/json;

  10. Android四大组件小结

    Android四大组件分别为activity.service.content provider.broadcast receiver. 一.android四大组件详解 1.activity (1)一个 ...