1137 Final Grading

练习 专栏收录该内容
322 篇文章 0 订阅

题目

题意: 给定学生成绩信息,求获得名单的人员信息

#include<iostream>
#include<string>
#include<algorithm>
#include<map>
#include<vector>
using namespace std;
struct ss {
	int p=-1,mid=-1,fin=-1;
	int G=0;
};
bool cmp(const pair<string,struct ss>& a,const pair<string,struct ss>& b) {
	return a.second.G!=b.second.G?a.second.G>b.second.G:a.first<b.first;//按总分、学号排序 
}
int main() {
	int p,m,n,score;
	string name;
	cin>>p>>m>>n;
	map<string,struct ss> ans;
	for(int i=0; i<p; ++i) {//平时测验 
		cin>>name>>score;
		ans[name].p=score;
	}
	for(int i=0; i<m; ++i) {//期中分数 
		cin>>name>>score;
		ans[name].mid=score;
	}
	for(int i=0; i<n; ++i) {//期末分数 
		cin>>name>>score;
		ans[name].fin=score;
	}
	//算总分G
	for(auto it = ans.begin(); it!=ans.end(); ++it) {
		if((*it).second.mid>(*it).second.fin) 
			(*it).second.G=(int)(((*it).second.mid)*0.4+((*it).second.fin)*0.6+0.5);
		else (*it).second.G=(*it).second.fin;
	}
	//转类型便于排序 
	vector<pair<string , struct ss>> ans1(ans.begin(),ans.end());
	sort(ans1.begin(),ans1.end(),cmp);
	for(auto it = ans1.begin(); it!=ans1.end(); ++it) {//选取合格者输出 
		if((*it).second.p>=200&&(*it).second.G>=60)
			cout<<(*it).first<<" "<<(*it).second.p<<" "<<(*it).second.mid<<" "<<(*it).second.fin<<" "<<(*it).second.G<<endl;
	}
	return 0;
}

 

  • 0
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 撸撸猫 设计师:马嘣嘣 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值