模拟NBA赛季
2017-06-01 10:10
148 查看
#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
4000
;
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;
}
#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
4000
;
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;
}
相关文章推荐
- 浅谈NBA新赛季
- NBA15-16赛季半程有感
- 【模拟】nba
- 扶我起来我还能打:NBA新赛季开打,历史数据看勇士是否无敌?
- XMind浅析——NBA新赛季几大看点
- python爬虫+数据分析之NBA球员LBJ13个赛季的数据分析
- 2006-2007NBA赛季球队一览
- NBA新赛季
- NBA 2012-2013赛季看点
- 【字符串处理】【模拟】【120718测试】【NOIP模拟题】NBA工资
- 爬取2016-2017赛季NBA球员的数据
- 2013/2014新赛季NBA最期待的
- R:抓取16~17赛季NBA球队实时数据
- 通过ASP.NET Ajax技术模拟实现NBA比赛文字直播功能
- 【字符串处理】【模拟】NBA工资
- NBA 2009-10赛季赛程表
- NBA新赛季开赛了,同时也好怀念宿舍里一同看球的感觉……
- 2005-2006赛季NBA季后赛首轮赛程——球队对阵版
- [NBA LIVE] NBA LIVE手游 开启全新赛季说明 v1.1
- android模拟NBA西决比赛!