一个c++的容器小作业

该代码示例展示了如何在C++中处理比赛评分系统。首先创建Person类来存储选手信息和评分,然后使用vector和deque数据结构进行操作。通过sort算法排序评分,去掉一个最高分和一个最低分,最后计算平均分。
摘要由CSDN通过智能技术生成

题目:有名选手,10个评委分别对没一名选手打分,除掉一个最高分,一个最低分,去平均分

1.创建5名选手,放到vector中

2.遍历vector容器,取出每一个选手,执行for循环,可以把10个评分打分存到deque容器中

3.sort算法对deque容器中分数排序,pop_back和pop_front去除最高分和最低分

4.deque容器遍历一遍,累加分数,累加后的分数/size

5.person.score =平均分

#include <vector>
#include <deque>
#include <algorithm>

class Person
{
public:
    string mname;
    float m_ave_score;
    deque<int> m_score;

public:
    Person(string name,float score)
    {
        mname = name;
        m_ave_score = score;
        m_score = deque<int>(10, 0); // 必须要初始化
    }
};

void creatPerson( vector<Person> &All_person, Person new_person)//这里必须要加引用,否则运行完就被释放了
{
    All_person.push_back(new_person);

}

void PrintAllPerson(vector<Person> All_person) // 这里加不加引用无所谓,只是打印而已
{

    int length = 0;
    length = All_person.size();
    cout << length<<endl;
    for(int i=0;i<length;i++)
    {   cout << "studnet" << i << " ";
        cout << All_person[i].m_ave_score << endl;
    }
}

void give_score(vector<Person> &All_person)
{
    int length = 0;
    length = All_person.size();
    for(int i=0;i<length;i++)
    {
        for (int n = 0; n<10;n++)
        {
           All_person[i].m_score[n] = rand()%41+60;
           cout << All_person[i].m_score[n] << " ";

        }
        cout << endl;
    }

}

void delHighLow(vector<Person> &All_person)
{
    int length = 0;
    length = All_person.size();



    for(int i=0;i<length;i++)
    {
        sort(All_person[i].m_score.begin(),All_person[i].m_score.end());
        All_person[i].m_score.pop_back();
        All_person[i].m_score.pop_front();
    }

    for(int i=0;i<length;i++)
    {
        for (int n = 0; n<All_person[i].m_score.size();n++)
        {

           cout << All_person[i].m_score[n] << " ";

        }
        cout << endl;
    }


}

void calave(vector<Person> &All_person)
{
    int length = 0;
    length = All_person.size();
    for(int i=0;i<length;i++)
    {
        int total = 0;
        for(int n =0; n<8;n++)
        {
            total = total+All_person[i].m_score[n];
        }
        All_person[i].m_ave_score = total/8;
        cout <<All_person[i].m_ave_score<<endl;
    }
}

void test05()
{

    vector<Person> All_person;

    Person student_A("student_A",0.0);


    Person student_B("student_b",0.0);
    creatPerson(All_person,student_A);
    creatPerson(All_person,student_B);

    give_score(All_person);
    delHighLow(All_person);
    calave(All_person);
//    PrintAllPerson(All_person);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值