题目内容:有一些班级的学生需要按绩点计算并排名。每门课的成绩只有在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. [SQL]reName存储过程

    exec sp_helptext aa--应用sp_helptext查看存储过程的定义文本 exec sp_depends aa --通过sp_depends查看存储过程的相关性 exec sp_he ...

  2. (easy)LeetCode 204.Count Primes

    Description: Count the number of prime numbers less than a non-negative number, n. Credits:Special t ...

  3. 列出当前ARM开发板系统加载的模块

    lsmod 列出当前系统中加载的模块,其中左边第一列是模块名,第二列是该模块大小,第三列则是使用该模块的对象数目

  4. Arch-Linux-添加中文字体

    代码下载: Arch-Linux-添加中文字体.txt

  5. php中引用符号(&)的使用详解

    php的引用就是在变量或者函数.对象等前面加上&符号,在PHP 中引用的意思是:不同的名字访问同一个变量内容,下面介绍如何使用PHP的引用 与C语言中的指针是有差别的.C语言中的指针里面存储的 ...

  6. struts2常用的常量constant

    常用的常量配置  struts.serve.static.browserCache 该属性设置浏览器是否缓存静态内容.当应用处于开发阶段时,我们希望每次请求都获得服务器的最新响应,则可设置该属性为fa ...

  7. C++ 之旅:前言

    日前,拿起了C++教材开始学习. 在大学二年级的时候,其实C++已经是我们的必修课程.然而,那时的我刚从C语言的噩梦中逃出来,对C++也不甚喜爱.刚接触编程的我当时实在无法理解譬如下面这段 int x ...

  8. 【Base64&UrlEncode】

    base641.包含A-Z a-z 0-9 和加号“+”,斜杠“/” 用来作为开始的64个数字. 等号“=”用来作为后缀用途.2.2进制的.3.要比源数据多33%.4.常用于邮件.5.  = 号的个数 ...

  9. "HTTP 错误 500.19 请求的页面的相关配置数据无效" 解决办法

    HTTP 错误 500.19 - Internal Server Error无法访问请求的页面,因为该页的相关配置数据无效. 问题"详细错误信息模块 IIS Web Core通知 Begin ...

  10. 洛谷P1930 亚瑟王的宫殿 Camelot

    P1930 亚瑟王的宫殿 Camelot 19通过 53提交 题目提供者JOHNKRAM 标签USACO 难度提高+/省选- 提交  讨论  题解 最新讨论 暂时没有讨论 题目描述 很久以前,亚瑟王和 ...