1. 程式人生 > >STL綜合例項 打分系統(一)思路與框架

STL綜合例項 打分系統(一)思路與框架

學校演講比賽

學校要舉行一場演講比賽,共有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);
    
    
}