美文网首页
STL案例:评委打分

STL案例:评委打分

作者: 温柔倾怀 | 来源:发表于2020-04-21 10:06 被阅读0次
/************************************************************************/
/* 案例  评委打分
/* 有5名选手ABCDE,10名评委对每位选手打分,去掉最高分最低分取平均值
/* 1. 创建5名选手,放到vector容器
/* 2. 遍历vector容器,取出每个选手进行打分,将10个评分放到deque容器
/* 3. sort算法对deque进行分数排序,去除最高分最低分
/* 4. deque容器遍历,取平均值
/************************************************************************/
#include <iostream>
#include <string>
#include <deque>
#include <cstdlib>
#include <vector>
#include <algorithm>
using namespace std;

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>& player)
{
    string nameSeed = "ABCDE";
    for (int i = 0; i < 5; i++)
    {
        string name = "选手_";
        name += nameSeed[i];
        int score = 0;
        Person p(name, score);
        player.push_back(p);
    }
}

void PrintPlayer(const vector<Person>& p)
{
    for (vector<Person>::const_iterator it = p.begin(); it != p.end(); it++)
    {
        cout << (*it).m_Name << " ";
        cout << (*it).m_Score << endl;
    }
}

void setScore(vector<Person>& p)
{
    for (vector<Person>::iterator it = p.begin(); it != p.end(); it++)
    {
        deque<int> score;
        for (int i = 0; i < 10; i++)
        {
            int sc = rand() % 41 + 60;
            score.push_back(sc);
        }
        sort(score.begin(), score.end());
        score.pop_back();
        score.pop_front();
        int sum = 0;
        for (deque<int>::iterator dt = score.begin(); dt != score.end(); dt++)
        {
            sum += (*dt);
        }
        (*it).m_Score = sum / score.size();
    }
}

int main()
{
    //1. 创建5名选手
    vector<Person> player;
    CreatePerson(player);

    //2. 评分
    setScore(player);
    PrintPlayer(player);

    system("pause");
    return 0;
}


相关文章

网友评论

      本文标题:STL案例:评委打分

      本文链接:https://www.haomeiwen.com/subject/qhwyihtx.html