vector和deque共同写的代码,实现10个购评委对4位选手的打分,并求出每位选手平均分
#include<iostream>
#include<string>
#include<vector>
#include<deque>
#include<time.h>
#include<algorithm>
using namespace std;
class Person {
private:
string name;
float averScore;
public:
Person(string name,float averScore ) {
this->name = name;
this->averScore = averScore;
}
void setScore(float aver) {
averScore = aver;
}
float getScore() {
return averScore;
}
string getName() {
return name;
}
};
void creatPerson(vector<Person> &v) {
string name = "ABCD";
for (int i = 0; i < size(name); i++)
{
string name1 = "学生";
name1 += name[i];
v.push_back(Person(name1, 0));//初始化学生对象
}
}
void intputInfor(vector<Person>& v) {
srand((unsigned int)time(NULL));//初始化随机种子
for (vector<Person>::iterator iter = v.begin(); iter < v.end(); iter++) {
deque<int> q;
for (int i = 0; i < 10; i++)//输入成绩
{
int score = rand() % (100 - 1 + 1) + 1;//每位选手的成绩 1~100
q.push_back(score);
}
//个评委打分展示
cout << "选手" << iter->getName() << " 评委的评分为: " << endl;
for (deque<int>::iterator iter1 = q.begin(); iter1 < q.end(); iter1++) {
cout <<*iter1<<" ";
}
cout << endl;
float sum=0;//总分
float aver;//平均分
sort(q.begin(), q.end());//排序
q.pop_front();//去掉最高分
q.pop_back();//去掉最低分
for (size_t i = 0; i < q.size(); i++)
{
sum += q[i];
}
aver = sum / q.size();
iter->setScore(aver);//设置平均分
}
}
void printScore(vector<Person>& v) {
for (vector<Person>::iterator iter = v.begin(); iter < v.end(); iter++) {
cout << "选手 " << iter->getName() << " " << "平均分" << iter->getScore() << endl;
}
};
int main() {
vector<Person> v;
creatPerson(v);//实例化选手
intputInfor(v);//录入成绩
printScore(v);//输出成绩
}