C++提高编程(三)—— STL常用容器(4) :STL案例1——评委打分
2021/5/19 22:25:56
本文主要是介绍C++提高编程(三)—— STL常用容器(4) :STL案例1——评委打分,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
C++系列内容的学习目录 → \rightarrow →C++学习系列内容汇总。
- 4. 评委打分案例
- 4.1 案例描述
- 4.2 实现步骤
4.1 案例描述
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除最低分,取平均分。
4.2 实现步骤
- 创建五名选手,放到vector中;
- 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中;
- sort算法对deque容器中分数排序,去除最高和最低分;
- deque容器遍历一遍,累加总分;
- 获取平均分。
评委打分案例的代码如下所示。
#include<iostream> using namespace std; #include<vector> #include<string> #include<deque> #include<algorithm> #include<ctime> //有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除最低分,取平均分 //选手类 class Person { public: Person(string name, int score) { this->m_Name = name; this->m_Score = score; } string m_Name; int m_Score; }; //创建选手 void createPerson(vector<Person>&v) { string nameSeed = "ABCDE"; for (int i = 0; i < 5; i++) { string name = "选手"; name += nameSeed[i]; int score = 0; Person p(name, score); v.push_back(p); //将创建的Person对象放入到容器中 } } //给选手打分 void setScore(vector<Person>&v) { for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { //将评委的分数放入到deque容器中 deque<int>d; for (int i = 0; i < 10; i++) { int score = rand() % 41 + 60; //60~100 d.push_back(score); } //测试 //cout << "选手:" << it->m_Name << " 打分:" << endl; //for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++) //{ // cout << *dit << " "; //} //cout << endl; //排序 sort(d.begin(), d.end()); //去除最高分和最低分 d.pop_back(); d.pop_front(); //取平均分 int sum = 0; for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++) { sum += *dit; //累加每个评委的分数 } int avg = sum / d.size(); //将平均分赋值给选手 it->m_Score = avg; } } void showScore(vector<Person>&v) { for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { cout << "姓名:" << it->m_Name << " 平均分:" << it->m_Score << endl; } } int main() { //随机数种子 srand((unsigned int)time(NULL)); //1. 创建5名选手 vector<Person>v; //存放选手的容器 createPerson(v); //测试 //for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) //{ // cout << "姓名:" << (*it).m_Name << " 分数:" << (*it).m_Score << endl; //} //2. 给5名选手打分 setScore(v); //3.显示最后得分 showScore(v); system("pause"); return 0; }
姓名:选手A 平均分:84
姓名:选手B 平均分:85
姓名:选手C 平均分:80
姓名:选手D 平均分:89
姓名:选手E 平均分:81
总结: 选取不同的容器操作数据,可以提升代码的效率。
这篇关于C++提高编程(三)—— STL常用容器(4) :STL案例1——评委打分的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-10-04el-table 开启定时器下,表格的选中状态会消失是什么原因-icode9专业技术文章分享
- 2024-10-03如何安装和初始化飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03如何安装 App 并连接到飞牛 NAS?-icode9专业技术文章分享
- 2024-10-03如何安装飞牛 TV 并连接到影视服务器?-icode9专业技术文章分享
- 2024-10-03如何在PVE和ESXI上安装飞牛私有云 fnOS?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS安装系统异常情况处理-icode9专业技术文章分享
- 2024-10-03飞牛NAS如何创建存储空间?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS硬盘会自动休眠吗?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何安装飞牛影视和创建媒体库?-icode9专业技术文章分享
- 2024-10-03fnOS国产最强NAS如何为家人朋友开通影视账号?-icode9专业技术文章分享