【C++学习笔记(四十六)】之演讲比赛项目实例(附源码)

本文章由公号【开发小鸽】发布!欢迎关注!!!


老规矩–妹妹镇楼:

一. 比赛规则:

       某市举行一场演讲比赛( speech_contest ),共有24个人参加。比赛共三轮,前两轮为淘汰赛,第三轮为决赛。

       比赛方式:分组比赛,每组6个人;选手每次要随机分组,进行比赛;

       第一轮分为4个小组,每组6个人。比如编号为: 100-123. 整体进行抽签(draw)后顺序演讲。当小组演讲完后,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。

       第二轮分为2个小组,每组6人。比赛完毕,淘汰组内排名最后的三个选手,然后继续下一个小组的比赛。

       第三轮只剩下1组6个人,本轮为决赛,选出前三名。

        比赛评分:10个评委打分,去除最低、最高分,求平均分每个选手演讲完由10个评委分别打分。该选手的最终得分是去掉一个最高分和一个最低分,求得剩下的8个成绩的平均分。选手的名次按得分降序排列。

用STL编程,求解这个问题

       1. 请打印出所有选手的名字与参赛号,并以参赛号的升序排列。

       2. 打印每一轮比赛后,小组比赛成绩和小组晋级名单


二. 需求分析:


  1. 生成选手: 姓名,编号,得分
  2. 第一轮比赛: 选手抽签,进行比赛,展示结果
  3. 第二轮比赛: 选手抽签,进行比赛,展示结果
  4. 第三轮比赛: 选手抽签,进行比赛,展示结果

三. 实现思路:


       1. 选手封装成类 Speaker,存储姓名(string name),得分信息(数组score[3],因为可能有三轮比赛)

       2. 选手的编号存在vector容器v1中

       3. 用map将选手的编号和选手信息映射起来

       4. 第一轮晋级编号放在vector容器v2中

       5. 第二轮晋级编号放在vector容器v3中

       6. 第三轮晋级编号放在vector容器v4中

       7. 每个小组的比赛得分信息,按照从大到小放在multimap中

       8. 选手的打分,用deque容器排序,删除最高最低值

公号回复 “演讲”,获取源码!!!

你可能感兴趣的:(C++学习笔记,c++)