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; }