#include <iostream>
#include <vector>
#include <time.h>
#include <deque>
#include <algorithm>
using namespace std; // 评委打分案例(sort 算法排序)
// 创建 5 个选手(姓名,得分) , 10 个评委对 5 个选手进行打分
// 得分规则:去除最高分,去除最低分,取出平均分
// 按得分对 5 名选手进行排名 // 选手类
class Player
{
public:
Player(){}
Player(string name, int score) :mName(name), mScore(score){}
public:
string mName;
int mScore;
}; // 创建选手
void CreatePlayer(vector<Player>& v)
{
string nameSeed = "ABCDE";
for (int i = ; i < ; i++)
{
Player p;
p.mName = "选手";
p.mName += nameSeed.at(i);
p.mScore = ;
v.push_back(p);
}
} // 下面for_each函数的回调函数
void PrintScore(int val)
{
cout << val << " ";
} // 打分
void SetScore(vector<Player>& p)
{
srand(time(NULL));
for (vector<Player>::iterator it = p.begin(); it != p.end(); it++)
{
// 给当前学生进行打分
deque<int> dScore;
for (int i = ; i < ; i++)
{
int score = rand() % + ;
cout << score << " ";
dScore.push_back(score);
}
cout << endl; // 对分数进行排序 默认从小到大
sort(dScore.begin(), dScore.end());
// 打印排序后的分数
for_each(dScore.begin(), dScore.end(), PrintScore);
cout << endl; // 去除最高分 去除最低分
dScore.pop_back();
dScore.pop_front();
// 求平均分
// 总分
int totalScore = ;
for (deque<int>::iterator it = dScore.begin(); it != dScore.end(); it++)
{
totalScore += *(it);
}
// 平均分
int avgScore = totalScore / dScore.size();
// 保存分数
(*it).mScore = avgScore;
cout << "-------------------------" << endl;
} } // 排序规则(下面sort函数的回调函数)
bool myCompare(Player& p1, Player& p2)
{
return p1.mScore > p2.mScore;
} // 根据选手分数排名 sort默认从小到大排序 希望是从大到小排序
void Print_Rank(vector<Player> v)
{
// 排序
sort(v.begin(), v.end(), myCompare);
// 打印
for (int i = ; i < v.size(); i++)
{
cout << "姓名:" << v.at(i).mName.c_str() << " 得分:" << v.at(i).mScore << endl;
}
} int main()
{
vector<Player> p;
CreatePlayer(p);
SetScore(p);
Print_Rank(p);
getchar();
return ;
}

最新文章

  1. Network Basic Commands Summary
  2. mysql nonInstall 版本的安装与配置
  3. android studio fetching android sdk component information
  4. Dubbo系列(3)_官方Demo说明
  5. 递归神经网络(Recurrent Neural Networks,RNN)
  6. js 前加分号和感叹号是什么意思?
  7. java中的异常处理机制_finally的使用
  8. db2官方SQLSTATE代码提示
  9. hdu 5423 Rikka with Tree(dfs)
  10. 【转】Linux驱动模块编译进内核中
  11. linux shell命令行下操作mysql 删除mysql指定数据库下的所有表--亲测成功百分百测试通过--绝对可靠
  12. 交换Ctrl和Caps Lock键
  13. Python学习笔记第二十二周(前端知识点补充)
  14. Python简单介绍
  15. python学习day5 常量 运算符补充 流程控制基础
  16. DG449 High Voltage Single SPDT Analog Switch in SOT23-8
  17. 解题:ZJOI 2015 幻想乡战略游戏
  18. CSS hack浏览器兼容一览表
  19. Iptables详解+实例
  20. perspective 的笔记

热门文章

  1. SVM算法总结
  2. Qt编写自定义控件21-圆弧仪表盘
  3. JAVA 基础编程练习题37 【程序 37 报数】
  4. JAVA 基础编程练习题28 【程序 28 排序算法】
  5. redis管理工具rdm安装;另一个管理工具medis
  6. Vscode中打开、新建内部终端快捷键方法
  7. js 数组遍历 对象遍历
  8. 洛谷 题解 P2010 【回文日期】
  9. css常见双栏和三栏布局
  10. NLP文本清理时常用的python小函数