1080 MOOC期终成绩 ——C++实现

题目

1080 MOOC期终成绩 (25 分)

对于在中国大学MOOC(http://www.icourse163.org/ )学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分(满分100)。总评成绩的计算公式为 G=(G​mid−term​​×40%+G​final​​×60%),如果 G​mid−term​​>G​final​​;否则总评 G 就是 G​final​​。这里 G​mid−term​​ 和 G​final​​ 分别为学生的期中和期末成绩。

现在的问题是,每次考试都产生一张独立的成绩单。本题就请你编写程序,把不同的成绩单合为一张。

输入格式:

输入在第一行给出3个整数,分别是 P(做了在线编程作业的学生数)、M(参加了期中考试的学生数)、N(参加了期末考试的学生数)。每个数都不超过10000。

接下来有三块输入。第一块包含 P 个在线编程成绩 G​p​​;第二块包含 M 个期中考试成绩 G​mid−term​​;第三块包含 N 个期末考试成绩 G​final​​。每个成绩占一行,格式为:学生学号 分数。其中学生学号为不超过20个字符的英文字母和数字;分数是非负整数(编程总分最高为900分,期中和期末的最高分为100分)。

输出格式:

打印出获得合格证书的学生名单。每个学生占一行,格式为:

学生学号 G​p​​ G​mid−term​​ G​final​​ G

如果有的成绩不存在(例如某人没参加期中考试),则在相应的位置输出“−1”。输出顺序为按照总评分数(四舍五入精确到整数)递减。若有并列,则按学号递增。题目保证学号没有重复,且至少存在1个合格的学生。

输入样例:

#include 
#include 
#include 
#include 
using namespace std;struct node{	//根据输出形式确定输出的数据结构 string id;int gp,gm,gf,g;
};bool cmp(node a,node b){return a.g!=b.g?a.g>b.g:a.id>P>>M>>N;vector v,ans;	//vector是动态数组,无需声明大小 v存储合理的,ans存储排序的 map idx;	//根据gp存储合理的学号 string str;for(int i=0;i>str>>tmp;if(tmp>=200){v.push_back(node{str,tmp,-1,-1,0});idx[str]=cnt++;}		}for(int i=0;i>str>>tmp;if(idx[str])	v[idx[str]-1].gm=tmp;}for(int i=0;i>str>>tmp;if(idx[str]){int tem=idx[str]-1;v[tem].gf=v[tem].g=tmp;if(v[tem].gm>v[tem].gf)	v[tem].g=int(0.4*v[tem].gm+0.6*v[tem].gf+0.5);}}for(int i=0;i=60)	ans.push_back(v[i]);sort(ans.begin(),ans.end(),cmp);for(int i=0;i

代码2:建立node就将需要初始化的成绩初始化

#include 
#include 
#include 
#include 
using namespace std;struct node{string id;int gp=-1,gm=-1,gf=-1,g=0;
};
bool cmp(node a,node b){return a.g!=b.g?a.g>b.g:a.id>P>>M>>N;string s;vector v(P),ans;map idx;for(int i=0;i>s>>tmp;if(tmp>=200){idx[s]=cnt++;v[idx[s]-1].id=s;v[idx[s]-1].gp=tmp;}} for(int i=0;i>s>>tmp;if(idx[s])	v[idx[s]-1].gm=tmp;}for(int i=0;i>s>>tmp;if(idx[s]){v[idx[s]-1].gf=v[idx[s]-1].g=tmp;if(v[idx[s]-1].gm>v[idx[s]-1].gf)	v[idx[s]-1].g=int(0.4*v[idx[s]-1].gm+0.6*v[idx[s]-1].gf+0.5)	;}}for(int i=0;i=60)	ans.push_back(v[i]);sort(ans.begin(),ans.end(),cmp);for(int i=0;i

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章