• 评委打分(C++ 容器综合练习)


    题目:

      十个评委给5个选手打分,去除每个选手的最高分和最低分,打印出每个选手的平均分。

    分析:

    1. 5个选手的信息(class 【姓名,平均分】)存储在 vector 中,最后显示的时候遍历 vector 打印出信息;
    2. 需要删除最高分和最低分(极值),可先进行排序,然后删除。 → 分数存储在 deque 中,直接对排序后的首尾数据进行处理。

    代码:

      1 #include <iostream>
      2 #include <string>
      3 #include <vector>
      4 #include <deque>
      5 #include <ctime>
      6 #include <algorithm>
      7 #include <iomanip>
      8 using namespace std;
      9 
     10 //选手信息(姓名,平均分)
     11 class Person
     12 {
     13 public:
     14     string name;
     15     float score;    //平均分
     16 
     17     Person(string n, float s) : name(n), score(s) {}
     18 };
     19 
     20 
     21 //创建5名选手
     22 void createPerson(vector<Person>& v)
     23 {
     24     string nameSeed = "ABCDE";
     25     for (int i = 0; i < 5; ++i)
     26     {
     27         string name = "选手";
     28         name += nameSeed[i];
     29 
     30         float score = 0.0;
     31         Person p(name, score);
     32 
     33         v.push_back(p);
     34     }
     35 }
     36 
     37 
     38 //设置分数(随机数)并计算结果
     39 void setScore(vector<Person>& v)
     40 {
     41     //5个人循环操作(存入数据,排序,删除首位,赋值成员变量)
     42     for (vector<Person>::iterator it = v.begin(); it != v.end(); ++it)
     43     {
     44         //10个随机分数
     45         deque<float> d;
     46         for (int i = 0; i < 10; ++i)
     47         {
     48             float score = rand() % 11;    //0 ~ 10
     49             d.push_back(score);
     50         }
     51 
     52         ////测试打分是否正常
     53         //for (deque<float>::iterator it = d.begin(); it != d.end(); ++it)
     54         //{
     55         //    cout << *it << ' ';
     56         //}
     57         //cout << endl;
     58 
     59         //排序
     60         sort(d.begin(), d.end());    //默认从小到大排序
     61 
     62         //去除最高和最低分
     63         d.pop_back();    //最高
     64         d.pop_front();
     65 
     66         //计算总分和平均分
     67         float sum = 0;
     68         float average = 0.0;
     69         for (auto i : d)
     70             sum += i;
     71 
     72         average = sum / d.size();
     73 
     74         //赋值给类成员变量
     75         (*it).score = average;
     76     }
     77 }
     78 
     79 
     80 //显示最终信息(姓名,平均分)
     81 void show_w(vector<Person>& v)
     82 {
     83     for (auto i : v)
     84     {
     85         cout << "Name: " << i.name << setw(13);
     86         cout << "Average: " << i.score << endl;
     87     }
     88 }
     89 
     90 
     91 int main()
     92 {
     93     //设置随机数种子
     94     srand((unsigned int)time(NULL));
     95 
     96     //vector 容器存放选手
     97     vector<Person> v;
     98 
     99     //创建选手
    100     createPerson(v);
    101 
    102     ////测试选手信息
    103     //for (vector<Person>::iterator it = v.begin(); it != v.end(); ++it)
    104     //{
    105     //    cout << "Name: " << (*it).name << endl;
    106     //}
    107 
    108     //设置分数
    109     setScore(v);
    110 
    111     //打印结果
    112     show_w(v);
    113 }
  • 相关阅读:
    一、用Delphi10.3模拟读取百度网页,并读取相关头部信息
    计算机语言发展史
    VMware workstation 14 安装 iOS虚拟机
    mysql-1
    linux网页资料链接
    Ubuntu常用命令大全
    搭建yum源
    CentOS7安装iptables防火墙
    nginx 第二课
    交换机
  • 原文地址:https://www.cnblogs.com/moyu557/p/12523682.html
Copyright © 2020-2023  润新知