文章目录

  • 题目分析
  • 题目链接

题目分析



分析:

首先一个学生有id,另外有4个成绩:编程成绩、期中成绩、期末成绩、总评成绩。现有3个成绩单:编程成绩、期中成绩、期末成绩,让计算总评成绩,并排序输出。

解答:使用string 到结构体的映射(建立hash表),<学号,学生结构体>,把所有信息存入结构体。

这里使用到结构体里面写函数,结构体里面写默认构造函数、结构体里面重载运算符等知识。(备注:和C++类很像)

//学生结构体
struct Student{string id;int program,mid,final;int grade;//默认构造函数:所有成绩初始化为-1Student(): program(-1),mid(-1),final(-1),grade(-1) {}//计算总评成绩void calc(){if(final > mid) grade = final;//round四舍五入函数else grade = round(mid * 0.4  + final * 0.6);}//重载小于号:排序bool operator<(const Student& a)const{if(grade !=a.grade) return grade > a.grade;else  return id< a.id;}
};

然后遍历hash表,找出符合条件(及格)的学生结构体放入vector,对vector排序输出即可。

AC代码

#include<bits/stdc++.h>
using namespace std;const int  N =1e5+10;
int p ,m , n;struct Student{string id;int program,mid,final;int grade;//构造函数Student(): program(-1),mid(-1),final(-1),grade(-1) {}void calc(){if(final > mid) grade = final;else grade = round(mid * 0.4  + final * 0.6);}bool operator<(const Student& a)const{if(grade !=a.grade) return grade > a.grade;else  return id< a.id;}
};unordered_map<string,Student> mp;int main(){cin >> p >> m >> n;string id;int grade;for(int i = 0; i<p ; i++){cin >> id>> grade;mp[id].id = id,mp[id].program = grade;}for(int i = 0; i<m ; i++){cin >> id>> grade;mp[id].id = id,mp[id].mid = grade;}for(int i = 0; i<n ; i++){cin >> id>> grade;mp[id].id = id,mp[id].final = grade;}vector<Student> students;for(auto item : mp){auto stu = item.second;stu.calc(); //计算总成绩if(stu.program >= 200 && stu.grade >= 60)students.push_back(stu);}sort(students.begin(),students.end());for(auto s : students)printf("%s %d %d %d %d\n", s.id.c_str(), s.program, s.mid,s.final,s.grade);}

题目链接

PAT甲级1137 Final Grading
https://www.acwing.com/problem/content/1632/

PAT甲级1137 Final Grading:[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数相关推荐

  1. PAT甲级1141 PAT Ranking of Institutions :[C++题解]结构体、排序、哈希表、结构体构造函数、结构体内写函数、排名

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:和下面这题是一道题: PAT甲级1137 Final Grading:[C++题解]结构体.排序.哈希表.结构体构造函数.结构体内写函 ...

  2. PAT甲级1153 Decode Registration Card of PAT :[C++题解]结构体、哈希表、排序、类似数据库查询题、好题

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 本题是三种不同的询问,难道要写三个结构体?想了想,就写了一个结构体,参赛人结构体,内容包括考号id和成绩grade,然后开结构体数组 ...

  3. PAT甲级1062 Talent and Virtue:[C++题解]结构体、哈希表

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 分4个vector,单独排序即可. ac代码 #include<bits/stdc++.h> using namespa ...

  4. PAT甲级1029 Median:[C++题解]贪心、二路归并

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 如果直接排序,时间复杂度是O(nlogn),n=2∗105O(nlogn),\ n=2*10^5O(nlogn), n=2∗105会 ...

  5. PAT甲级1070 Mooncake:[C++题解]贪心

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析: 对单件从高到低排序. 需要注意的是总需要量d设成double,不要设成int. ac代码 #include<bits/stdc ...

  6. PAT甲级1008 Elevator:[C++题解]模拟

    文章目录 题目分析 题目来源 题目分析 来源:acwing 分析:统计上升次数.下降次数:停留次数就是n.然后算数即可. ac代码 #include<bits/stdc++.h> usin ...

  7. PAT甲级1077 Kuchiguse:[C++题解]字符串、最长公共后缀

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 读入n个字符串s[n],以s[0]为基础找公共后缀.枚举后缀的长度,内层循环遍历其他字符串,判断是否后缀相等. 使用子串的函数sub ...

  8. PAT甲级1078 Hashing:[C++题解]哈希表、哈希表开放寻址法、二次探测法

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 本题建立hash表是利用只具有正增量的二次探测法来解决冲突, 索引 = 数 % 哈希表的大小 如果映射到同一个索引idx,hash表 ...

  9. PAT甲级1003 Emergency:[C++题解]dijkstra求最短路、最短路条数

    文章目录 题目分析 题目链接 题目分析 分析:求单源最短路,使用dijkstra()算法. 最短路的条数,和最短路中 人数最多的一条,输出最多人数. 本题点比较少,使用邻接矩阵d[N][N]来存. a ...

最新文章

  1. laravel 目录
  2. Axis,axis2,Xfire以及cxf对比 (转)
  3. 阿里DataV可视化大屏基本操作
  4. 2019年最好的前端进阶课,合同保障不过20w年薪全额退款!
  5. 永恒之塔 java_AionChs
  6. 总结目前做得好的新实体店,大致有如下几点
  7. 帆软报表跨域之插件开发中Controller中定义的方法实现CROS的GET跨域,且请求头带自定义属性
  8. Web服务器程序解释请求消息并作出响应
  9. drupal7 payment module:把支付form元素注入到form中
  10. 32. Magento log()方法
  11. paip.php调试脱离IDE VC59
  12. php_redis配置安装php_redis-5.1.1-7.4-nts-vc15-x64.zip
  13. 3. Spring Boot 从零开始学习
  14. 【合同】产品设计:ID与MD设计合同模板
  15. CSS 动画 animation
  16. 麒麟芯片鸿蒙芯片高通骁龙,麒麟和骁龙两款处理器,选哪一款比较好,看完这三点你就明白了...
  17. 淘集集报活动需要隐身上架商品的链接吗?
  18. CTF-WEB总结(四-题目来源i春秋)
  19. 《算法竞赛入门经典(第2版)》——学习记录
  20. Matlab实现求解乘法逆元实验

热门文章

  1. HDU1716(全排列)
  2. android 入门-Android Permission denied(不允许连接Socket) 错误
  3. hdu 4417 划分树
  4. VB6.0使用ADO对象连接数据库
  5. ahk编程_AHK编程可视化的实现
  6. 神经网络的核裂变模型
  7. python请求post无返回结果_Python请求POST返回不完整的内容
  8. 介绍几本专业的书籍,一起学习
  9. 虚拟机屏幕界面自适应调整
  10. 拉格朗日差值法----算法学习