模拟NBA赛季

来源:互联网 发布:逃生2剧情解析知乎 编辑:程序博客网 时间:2024/05/01 04:14

#include<iostream>

#include<windows.h>

#include<time.h>

using namespace std;

 

class Team

{

public:

       Team(charn[20],int w,int l,int g) //分别是队名,胜场,负场,已进行场数

       {

              for(inti=0;i<20;i++)

                  name[i]=n[i];

              win=w;lose=l;game=g;

              cha=0.0;

              game_point=0;

       }

       intpoint; //每局比分

       intwin; //胜场

       intlose; //负场

       doubleper; //胜率

       doublecha;  //胜场差

       intgame; //已经进行的比赛数

       charname[20];

       intgame_point; //大比分

       voidtake_game(Team &a,Team &b);

       voidgame_cha(Team &a,Team &b);

       voidgame_per();

};

 

 

 

void Team::game_per()

{

       per=win/13.0;  //计算胜率

}

 

void Team ::game_cha(Team &a,Team&b)

{

       cha=(a.win-b.win)/2.0+(b.lose-a.lose)/2.0;  //计算胜场差

}

 

 

void Team :: take_game(Team &a,Team&b)        //随机模拟进行每局战况

{

       inti,j;

       do{

              i=rand();

       }while(i<80|| i>130);   

       a.point=i;            //随机产生一队比分

       do{

              j=rand();

              if(j==i)

              {

                     if(j%2==0)

                        j++; //保证两队比分不同

                     elsei++;

              }

       }while(j<80|| j>130);

       b.point=j;           //随机产生另一队比分

       cout<<a.name<<""<<a.point<<":"<<b.point<<""<<b.name<<endl;

       if(i>j)

       {

              a.win++;

       b.lose++;

       }

       else{

              b.win++;

              a.lose++;

       }

 

       if(i>j)

              a.game_point++;         

       elseb.game_point++;        //比较两队比分,更改大比分

}

 

 

 

int main()

{

       srand(time(0));

 

       inti,j,k=0; //用来产生交战双方的代替参数

 

       Teamx("0",0,0,0);

       Teamt[6]={

              Team("湖人",0,0,0),

              Team("马刺",0,0,0),

              Team("勇士",0,0,0),

              Team("骑士",0,0,0),

              Team("老鹰",0,0,0),

              Team("奇才",0,0,0)

       };

              Team*team;

              team=&t[0];

      

              t[2].take_game(t[2],t[3]);t[2].game++; t[3].game++;

  

              for(i=0;i<3;i++)  //东西部互相一场,西部主场

              {

                     for(j=3;j<6;j++)

                     {

                            t[i].take_game(t[i],t[j]);t[i].game++; t[j].game++;

                     }

              }

 

              for(i=3;i<6;i++)  //东西部第二场,东部主场

              {

                     for(j=0;j<3;j++)

                     {

                            t[i].take_game(t[i],t[j]);t[i].game++; t[j].game++;

                     }

              }

 

              for(i=0;i<2;i++)

              {//西部同赛区4场

                     t[0].take_game(t[0],t[1]);t[0].game++; t[1].game++;

                     t[1].take_game(t[1],t[0]);t[0].game++; t[1].game++;

              }

 

              for(i=0;i<2;i++)

              {//东部同赛区4场

                     t[4].take_game(t[4],t[5]);t[4].game++; t[5].game++;

                     t[5].take_game(t[5],t[4]);t[4].game++; t[5].game++;

              }

              for(i=0;i<2;i++)

              {//西部同赛区3场

                     t[2].take_game(t[2],t[i]);t[2].game++; t[i].game++;

                     t[i].take_game(t[i],t[2]);t[2].game++; t[i].game++;

                     t[2].take_game(t[2],t[i]);t[2].game++; t[i].game++;

              }

              for(i=4;i<6;i++)

              {//东部同赛区3场

                     t[3].take_game(t[3],t[i]);t[3].game++; t[i].game++;

                     t[i].take_game(t[i],t[3]);t[3].game++; t[i].game++;

                     t[3].take_game(t[3],t[i]);t[3].game++; t[i].game++;

              }

       //所有比赛进行完毕

 

              for(i=0;i<6;i++)

              {

                     t[i].game_per();  //将胜率赋给每个变量

              }

 

             

             

              for(j=0;j<2;j++)

          for(i=0;i<2-j;i++)                 //对西部排序

               if (t[i].win<t[i+1].win)       //控制由大到小

                        {

                         x=t[i];

                         t[i]=t[i+1];

                         t[i+1]=x;

                        }

           for(j=0;j<2;j++)                   //对东部排序,注意计数器起始数字!!

                     for(i=0;i<2-j;i++)

                            if(t[i+3].win<t[i+4].win)

                            {

                         x=t[i+3];

                         t[i+3]=t[i+4];

                         t[i+4]=x;

                        }

 

              t[1].game_cha(t[0],t[1]);

              t[2].game_cha(t[0],t[2]);

              t[4].game_cha(t[3],t[4]);

              t[5].game_cha(t[3],t[5]);  //计算胜场差

      

 

              cout<<"                  西部"<<endl;                                       //输出东西部排名表

              cout<<"排名      队名     场数      胜场      负场      胜率        胜场差    "<<endl;

              for(i=1;i<4;i++) 

                     cout<<""<<i<<"       "<<t[i-1].name<<"     "<<t[i-1].game<<"        "<<t[i-1].win<<"        "<<t[i-1].lose<<"       "<<t[i-1].per<<"      "<<t[i-1].cha<<endl<<endl;

 

              cout<<"                  东部"<<endl;

              cout<<"排名      队名     场数      胜场      负场      胜率        胜场差        "<<endl;

              for(i=1;i<4;i++)

                     cout<<""<<i<<"        "<<t[i+2].name<<"     "<<t[i+2].game<<"        "<<t[i+2].win<<"        "<<t[i+2].lose<<"       "<<t[i+2].per<<"      "<<t[i+2].cha<<endl<<endl;

 

 

       Team*team0; //用来赋予总冠军

       Team*team1; //用来接收第一个晋级

       Team*team2; //用来接收第二个晋级

   

       team0=&t[0];

       team1=&t[0];

       team2=&t[1];

 

       for(i=0;i<6;i++)

              t[i].game_point=0;   //进入季后赛初始化大比分

 

 

       do{

              cout<<t[0].name<<""<<t[0].game_point<<":"<<t[1].game_point<<""<<t[1].name<<endl<<endl;

           t[0].take_game(t[0],t[1]);

       }while(t[0].game_point!=4&& t[1].game_point!=4);         //模拟比赛进行,当有一队大比分到4,跳出循环

       cout<<t[0].name<<""<<t[0].game_point<<":"<<t[1].game_point<<""<<t[1].name<<endl;

 

 

       do{

              cout<<t[3].name<<""<<t[3].game_point<<":"<<t[4].game_point<<""<<t[4].name<<endl<<endl;

           t[3].take_game(t[3],t[4]);

       }while(t[3].game_point!=4&& t[4].game_point!=4);        //模拟比赛进行,当有一队大比分到4,跳出循环

       cout<<t[3].name<<""<<t[3].game_point<<":"<<t[4].game_point<<""<<t[4].name<<endl;

 

 

       if(t[0].game_point==4)      

              team1=&t[0];

       elseteam1=&t[1];        //将大比分为4的赋给team1指针

 

       if(t[3].game_point==4)

              team2=&t[3];

       elseteam2=&t[4];         //将大比分为4的赋给team2指针

 

       (*team1).game_point=0;(*team2).game_point=0;     //将晋级者的大比分初始化

       do{

              cout<<(*team1).name<<""<<(*team1).game_point<<":"<<(*team2).game_point<<""<<(*team2).name<<endl<<endl;

           (*team1).take_game(*team1,*team2);

       }while((*team1).game_point!=4&& (*team2).game_point!=4);          //两指针携带晋级者济宁随机比赛,当大比分到4跳出循环     

       cout<<(*team1).name<<""<<(*team1).game_point<<":"<<(*team2).game_point<<""<<(*team2).name<<endl;

 

       if((*team1).game_point==4)

              team0=team1;

       elseteam0=team2;     //将比分为4的赋给总冠军指针team0

 

       cout<<"             "<<(*team0).name<<endl;              //将对抗局势用表展现出来

       cout<<"               丨"<<endl;

       cout<<"               丨"<<endl;

       cout<<"      -------------------"<<endl;

       cout<<"     丨"<<"           "<<"     丨"<<endl;

       cout<<"     丨"<<"           "<<"     丨"<<endl;

       cout<<"   "<<(*team1).name<<"              "<<(*team2).name<<endl;

       cout<<"     丨"<<"           "<<"     丨"<<endl;

       cout<<"     丨"<<"           "<<"     丨"<<endl;

       cout<<"  ---------"<<"        "<<"---------"<<endl;

       cout<<"丨       丨"<<"    "<<"  丨       丨"<<endl;

       cout<<"丨       丨"<<"    "<<"  丨       丨"<<endl;

       cout<<t[0].name<<"     "<<t[1].name<<"     "<<t[3].name<<"     "<<t[4].name<<endl;

 

   cout<<endl<<endl;

       cout<<"恭喜"<<(*team0).name<<"获得NBA年度总冠军!!"<<endl;

 

             

 

       return0;

}