STL綜合例項 打分系統(一)思路與框架
阿新 • • 發佈:2018-11-11
學校演講比賽
學校要舉行一場演講比賽,共有24個人參加,按參加順序設定參賽號。比賽共三輪,前兩輪為淘汰賽,第三輪為決賽。
比賽方式:分組比賽
第一輪分為4個小組,根據參賽號順序依次劃分,比如100-105為一組,106-111為第二組,依次類推,每組6個人,每人分別按參賽號順序演講。當小組演講完後,淘汰組內排名最後的三個選手,然後繼續下一個小組的比賽。
第二輪分為2個小組,每組6人,每個人分別按參賽號順序演講。當小組完後,淘汰組內排名最後的三個選手,然後繼續下一個小組的比賽。
第三輪只剩下6個人,本輪為決賽,選出前三名。
選手每次要隨機分組,進行比賽。
比賽評分
10個評委打分,去除最低、最高分,求平均分
每個選手演講完由10個評委分別打分。該選手的最終得分是去掉一個最高分和一個最低分,求得剩下的8個成績的平均分。選手的名次按得分降序排列,若得分一樣,按參賽號升序排名。
需求分析:
1.產生選手 A~Y ,姓名,得分,選手編號
2.第一輪:選手抽籤 選手比賽 檢視比賽結果
3. 第二輪:選手抽籤 選手比賽 檢視比賽結果
4. 第三輪:選手抽籤 選手比賽 檢視比賽結果
具體實現:
/*這裡只是寫了基本框架,知識為了看清楚函式設計思路,分步而治,逐步求精 下篇部落格會實現函式功能*/ #include<iostream> #include<map> #include<vector> #include<string> using namespace std; class player{ public: string name; int score[3]; }; //建立選手 void Create_player(map<int,player>& mplist,vector<int>& v1){ } //第一輪比賽 //隨機抽籤 void Set_Random(vector<int> &v1){ } //打分 void Set_Score(int l,vector<int>& v1,map<int,player>& mplist,vector<int>& v2){ } //晉級 void show_Good(int l,vector<int>& v1,map<int,player>& mplist){ } int main(){ //定義map容器 根據編號儲存選手資訊 map<int,player> mplist; //第一輪比賽參賽列表 24人晉級12人 vector<int> v1; //第二輪比賽參賽列表 12人晉級6人 vector<int> v2; //第三輪比賽列表 6人晉級3人 vector<int> v3; //最終的前三名 vector<int> v4; //建立選手 Create_player(mplist,v1); //第一輪比賽 //隨機分配 Set_Random(v1); //打分 Set_Score(1,v2,mplist,v2); //晉級 show_Good(1,v1,mplist); //第二輪比賽 //隨機分配 Set_Random(v2); //打分 Set_Score(1,v2,mplist,v3); //晉級 show_Good(1,v3,mplist); //第三輪比賽 //隨機分配 Set_Random(v3); //打分 Set_Score(1,v3,mplist,v4); //晉級 show_Good(1,v4,mplist); }