题目内容:有一些班级的学生需要按绩点计算并排名。每门课的成绩只有在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. Flex使用宋体渲染越南语显示错误

    本来应该显示Lưu nhóm,偏偏编译后显示Lưu nhòm.二声变成了四声,并且某些情况下,刚打开的窗口时二声的,然后变成了四声.初始以为是Flex的问题,分别使用S和mx包下的Label做实验,后 ...

  2. HYSBZ 1036 【树链剖分】

    思路: 裸裸的树链剖分.... 树链剖分就是把一棵树分成若干重链和轻链...然后保证形成的线段树上每条链是连续存储的.然后这样就能用线段树进行维护了. 但是每次一定要保证是在同一条链里边....思路就 ...

  3. ubuntu更换软件源

     ubuntu更换软件源 /etc/apt/source.list 163: deb http://mirrors.163.com/ubuntu/ trusty main restricted u ...

  4. (转)配置Website的IIS时遇到的问题与解决方法

    在部署WebSite时遇到问题,刚好发现Eric Sun的文章,因此转载做个副本. 原文地址:http://www.cnblogs.com/mingmingruyuedlut/archive/2011 ...

  5. 一道 JavaScript 面试题

    有一道 JavaScript 面试题. f = function () { return true; }; g = function () { return false; }; (function() ...

  6. HttpWebRequest访问时,错误:(401)未经授权。

    HttpWebRequest访问时,错误:(401)未经授权. 某网页,我不想做登录界面,直接使用域的帐号密码来访问.如果网站设置成Window身份验证,单独的页面都没问题,而是通过使用HttpWeb ...

  7. CODESOFT中线条形状该如何绘制

    CODESOFT条码设计软件提供了一系列工具,可帮助您设计完美的标签.在CODESOFT进行标签设计时,经常会需要创建除条码,文本对象除外的一些对象,那就是形状对象.如线条.圆形.矩形等.通过下面的示 ...

  8. MSP430F149学习之路——时钟2

    代码一: /************************** 功能:LED每隔1秒闪烁一次 ****************************/ #include <msp430x14 ...

  9. SOS 调试扩展 (SOS.dll) 《第五篇》

    一.SOS扩展命令 SOS包含几十个命令,要熟练使用SOS,首先要了解SOS有哪些命令.下面给出SOS命令列表. 命令 描述 BPMD [<module name> <method ...

  10. JS 和 CSS 的位置对其他资源加载顺序的影响

    JS 和 CSS 在页面中的位置,会影响其他资源(指 img 等非 js 和 css 资源)的加载顺序,究其原因,有三个值得注意的点: JS 有可能会修改 DOM. 典型的,可能会有 document ...