n个评委给m个选手打分python_n个评委为m个选手打分(n个评委打分总次数<mn)。请问如何评判m个选手的成绩?...

该程序使用C++编写,模拟n个评委为m个选手打分的过程。每个选手会收到n次评分,程序会去除一个最低分和一个最高分,计算选手的平均分,并对所有选手的平均分进行从低到高的排序。用户可以输入选手和评委的人数,程序会随机生成评分并显示结果。
摘要由CSDN通过智能技术生成

我这个是C++的代码 里面含有标准库。

#include

#include

#include

#include

#include

#include

using namespace std;

class Person

{

public:

Person(){};

Person(string name, double score)

{

this->m_Name = name;

this->m_Score = score;

}

string m_Name;

double m_Score; //平均分

};

void creatPerson(vector&v,int n)

{

int score = 0;

for (int i = 0; i < n; ++i)

{

string name1 = to_string(i+1); //int类型转化为string类型

string name2 = "号选手";

name1 += name2;

Person p(name1, score);

v.push_back(p);

}

}

void printVector(vector&v)

{

for (vector::iterator it = v.begin(); it != v.end(); ++it)

{

cout << it->m_Name << "最终平均分数为:" << it->m_Score << endl;

}

}

void printVector2(vector&v)

{

for (vector::iterator it = v.begin(); it != v.end(); ++it)

{

cout << it->m_Name << " ";

}

cout << endl;

}

void setVector(vector&v,int m)

{

for (vector::iterator it = v.begin(); it != v.end(); ++it)

{

dequed;

cout << "已为" << it->m_Name <

for (int i = 0; i < m; ++i)

{

int score = rand() % 41 + 60;

d.push_back(score);

}

for (deque::iterator dit = d.begin(); dit != d.end(); ++dit)

{

cout << *dit << " ";

}

cout << endl;

sort(d.begin(), d.end());

d.pop_front();

d.pop_back();

/*for (deque::iterator dit = d.begin(); dit != d.end(); ++dit)

{

cout << *dit << " ";

}

cout << endl;*/

int sum = 0;

for (deque::iterator dit = d.begin(); dit != d.end(); ++dit)

{

sum += *dit;

}

//cout << "sum=" << sum << "数量" << d.size() << endl;

double avg = sum*1.0 / d.size();

it->m_Score = avg;

}

cout << endl;

}

void sortScore(vector&v)

{

vector::iterator it = v.begin();

Person t;

for (unsigned int i = 0; i < v.size(); ++i)

{

for (unsigned int j = 0; j < v.size() - i - 1; ++j)

{

if (it[j].m_Score>it[j + 1].m_Score) //比较分数

{

t = it[j]; //更换整体

it[j] = it[j + 1];

it[j + 1] = t;

}

}

}

}

int main(void)

{

cout << "软件说明:" << endl;

cout << "该软件为N个评委为M个选手打分,这样每一个选手就收到N次打分,去掉一个最低分和一个最高分,算出选手的平均分,并为这些选手按平均分从低到高排序。" << endl;

cout << endl;

cout << "请输入选手的个数N=";

int n;

while (true)

{

char c = cin.peek();

if (c > '0'&& c <= '9')

{

cin >> n;

cout << "你设置的选手人数为:" << n << endl;

break;

}

cin.clear(); //重置标志位

cin.sync(); //清空缓冲区

cout << "你输入不正确,请重新输入" << endl;

}

getchar();

cout << endl;

cout << "请输入评委的个数M=";

int m;

while (true)

{

char c = cin.peek();

if (c > '0'&& c <= '9')

{

cin >> m;

cout << "你设置的评委人数为:" << m << endl;

break;

}

cin.clear(); //重置标志位

cin.sync(); //清空缓冲区

cout << "你输入不正确,请重新输入" << endl;

}

cout << endl;

cout << "请这"<

cout << "(为了避免手动输入分数浪费时间,下面让计算机随机为选手打"<

cout << endl;

srand((unsigned int)time(NULL)); //随机数种子

vectorv;

creatPerson(v,n);

//printVector(v);

setVector(v,m);

cout << endl;

cout << "去掉一个最低分,去掉一个最高分:"<

printVector(v);

cout << endl;

cout << "选手成绩由低到高排序如下:" << endl;

sortScore(v);

printVector2(v);

system("pause");

return 0;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值