C++进阶STL-容器的综合例子

快来打我* 2022-05-09 07:10 328阅读 0赞

题目:
//5个选手,10个评委
//10个评委给每个选手打分,去掉最高分和最低分,再取平均值就是最终的得分
//最后再给每个选手按分数排序

  1. #include "stdafx.h"
  2. #include <string>
  3. #include <iostream>
  4. #include <vector>
  5. #include <deque>
  6. #include <algorithm>
  7. using namespace std;
  8. class Player
  9. {
  10. public:
  11. Player(string name,int score):m_score(score),m_name(name)
  12. {
  13. }
  14. int m_score;
  15. string m_name;
  16. };
  17. //构造选手
  18. void SetPlayer(vector<Player> & player)
  19. {
  20. string str1 = "ABCDE";
  21. for (int i = 0; i < 5; i++)
  22. {
  23. string str2 = "Player";
  24. str2 +=str1[i];
  25. Player p(str2, 0); //PlayerA PlayerB......
  26. player.push_back(p);
  27. }
  28. }
  29. // 打分
  30. void SetScore(vector<Player> & player)
  31. {
  32. for (vector<Player>::iterator it = player.begin(); it != player.end(); it++)
  33. {
  34. deque<int> deq_s;
  35. for (int j = 0; j < 10; j++) //10个评委打分
  36. {
  37. int scorexx = rand() % 41 + 60; //60-100
  38. deq_s.push_back(scorexx);
  39. }
  40. sort(deq_s.begin(), deq_s.end()); //排序
  41. deq_s.pop_back(); //去掉最高分和最低分
  42. deq_s.pop_front();
  43. int sum=0;
  44. for (deque<int>::iterator itd = deq_s.begin(); itd != deq_s.end(); itd++)
  45. {
  46. sum += (*itd);
  47. }
  48. int average=sum / deq_s.size(); //求平均值
  49. (*it).m_score = average; //将最后的得分赋值给每个选手
  50. }
  51. }
  52. bool mycompar(Player& p1, Player& p2) //从小到到
  53. {
  54. return p1.m_score < p2.m_score;
  55. }
  56. //排序
  57. void SortPlayer(vector<Player>& player)
  58. {
  59. sort(player.begin(), player.end(), mycompar);
  60. }
  61. void print(vector<Player>& player)
  62. {
  63. for (vector<Player>::iterator it = player.begin(); it != player.end(); it++)
  64. {
  65. cout << "Name:" << (*it).m_name << " " << "Scores:" << (*it).m_score << endl;
  66. }
  67. }
  68. int main()
  69. {
  70. vector<Player> player;
  71. SetPlayer(player);
  72. SetScore(player);
  73. SortPlayer(player);
  74. print(player);
  75. return 0;
  76. }

结果:
直接运行就行,所有打分都是随机生成的
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,328人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C++STL-模板

    模板的机制 模板并不是能处理任何类型的数据,只是它根据传入参数的类型的不同生成了不同的 函数/类 体(我们在不使用函数模板的正常操作,只不过编译器帮我们做了)。在此编译过

    相关 C++STL-综合案例

    演讲比赛 演讲说明:24名同学参加演讲比赛,分为三轮。前两轮淘汰赛,后一轮是决赛。 比赛方式:第一轮分4组,每组6人,每次随机分组,再进行比赛