当前位置:   article > 正文

STL案例 评委打分

STL案例 评委打分

案例描述: 
有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分
实现步骤
1. 创建五名选手,放到vector中
2. 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中
3. sort算法对deque容器中分数排序,去除最高和最低分
4. deque容器遍历一遍,累加总分
5. 获取平均分

  1. #include <iostream>
  2. #include<vector>
  3. #include<algorithm>//算法 头文件
  4. #include<string>
  5. #include<deque>
  6. #include<ctime>
  7. using namespace std;
  8. //案例描述:
  9. //有5名选手:选手ABCDE,10个评委分别对每一名选手打分,去除最高分,去除评委中最低分,取平均分
  10. // 实现步骤
  11. //1. 创建五名选手,放到vector中
  12. //2. 遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中
  13. //3. sort算法对deque容器中分数排序,去除最高和最低分
  14. //4. deque容器遍历一遍,累加总分
  15. //5. 获取平均分
  16. //选手类
  17. class Person{
  18. public:
  19. Person(string name,int score){
  20. this->m_Name=name;
  21. this->m_Score=score;
  22. }
  23. string m_Name;//姓名
  24. int m_Score;
  25. };
  26. void createPerson(vector<Person>&v){
  27. string nameSeed="ABCDE";
  28. for(int i=0;i<5;i++){
  29. string name="选手";
  30. name+=nameSeed [i];//小技巧
  31. int score=0;
  32. Person p(name,score);//在这不处理分数的原因是想在deque容器中处理
  33. //将创建的person对象 放入到容器中
  34. v.push_back(p);
  35. }
  36. }
  37. //打分
  38. void setScore(vector<Person>&v){
  39. for(vector<Person>::iterator it=v.begin();it!=v.end();it++){
  40. //将评委的分数放入到deque容器中
  41. deque<int>d;
  42. for(int i=0;i<10;i++){
  43. int score=rand()%41+60;
  44. d.push_back(score);
  45. }
  46. //测试代码
  47. cout<<"选手:"<<it->m_Name<<"打分"<<endl;
  48. for(deque<int>::iterator dit=d.begin();dit!=d.end();dit++){
  49. cout<<*dit<<" ";//10列
  50. }
  51. cout<<endl;
  52. //排序
  53. sort(d.begin(),d.end());
  54. //去除最高和最低分
  55. d.pop_back();
  56. d.pop_front();
  57. //取平均分
  58. int sum=0;
  59. for(deque<int>::iterator dit=d.begin();dit!=d.end();dit++){
  60. sum+=*dit;//累加每个评委分数
  61. }
  62. int avg=sum/d.size();
  63. //将平均分 赋值给选手身上
  64. it->m_Score=avg;
  65. }
  66. }
  67. void showScore(vector<Person>&v){
  68. for(vector<Person>::iterator it=v.begin();it!=v.end();it++){
  69. cout<<"姓名"<<it->m_Name<<"平均分:"<<it->m_Score<<endl;
  70. }
  71. }
  72. void test01(){
  73. //1.创建五名选手
  74. vector<Person>v;
  75. createPerson(v);
  76. //测试
  77. // for(vector<Person>::iterator it=v.begin();it!=v.end();it++){
  78. // cout<<"姓名"<<(*it).m_Name<<"分数"<<(*it).m_Score<<endl;
  79. // }
  80. //2.给五名选手打分
  81. setScore(v);
  82. // 3.显示最后得分
  83. showScore(v);
  84. }
  85. int main()
  86. {
  87. //随机种子
  88. srand((unsigned int)time(NULL));
  89. test01();
  90. system("pause");
  91. }

注意看注释

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/84943
推荐阅读
相关标签
  

闽ICP备14008679号