C++学习 --- 案例1-评委打分
1 案例描述
2 实现步骤
#include <iostream> #include <string> #include <vector> #include <deque> #include <algorithm> #include <ctime> using namespace std; /* 有5名选手:选手ABCDE,10个评委分别对每一名选手打分, 去除最高分,去除评委中最低分,取平均分。 */ //选手类 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> &v) { string nameSeed = "ABCDE"; for (int i = 0; i < 5; i++) { string name = "选手"; name += nameSeed[i]; int score = 0; Person p(name,score); //将创建的Person对象放入到容器中 v.push_back(p); } } //打分 void setscore(vector<Person> &v) { //遍历选手 for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { //将评委的分数 放入到deque容器中 deque<int> d; for (int i = 0; i < 10; i++) { int score = rand()%41 +60; //60~100 d.push_back(score); } //选手打分输出 /*cout << "选手:" << it->m_Name << "打分:" << endl; for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++) { cout << *dit << " "; } cout << endl;*/ //找最高最低分之前先排序 sort(d.begin(),d.end()); //去除最高分和最低分,去两端 d.pop_back(); d.pop_front(); //取平均分 int sum = 0; for (deque<int>::iterator dit = d.begin(); dit != d.end(); dit++) { sum += *dit; //累加每个评委的分数 } int avg = sum / d.size(); //总分除以个数 //将平均分赋值给选手 it->m_Score = avg; //cout << "平均分为:" << it->m_Score << endl; } } //显示平均分 void showScore(vector<Person> &v) { for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { cout << "姓名:" << it->m_Name << "\t平均分:" << it->m_Score << endl; } } int main() { //随机数种子 srand((unsigned)time(NULL)); //1.创建5名选手 vector<Person> v; //存放选手的容器 createPerson(v); //测试 /*for (vector<Person>::iterator it = v.begin(); it != v.end(); it++) { cout << "姓名:" << (*it).m_Name << "分数:" << (*it).m_Score << endl; }*/ //2.给5名选手打分 setscore(v); //3.显示最后得分 showScore(v); system("pause"); return 0; }