⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sports.cpp

📁 迷宫问题与运动会,有丰富的实例与测试数据
💻 CPP
字号:
/* 
5 
school1 
school2 
school3 
school4 
school5 
2 3 
跳远 
1 2 3 4 5 
长跑 
5 4 2 1 3 
跳高 
1 3 2 4 5 
100m 
2 1 3 5 4 
铅球 
3 2 1 4 5 
*/ 
#include<iostream> 
#include<string> 
#include<iomanip> 
using namespace std; 
int n; //n个学校 
int m; //m个男子项目 
int w; //w个女子项目 

struct pro //表示项目的结构体 
{ 
	string name; //项目名称 
	int snum[6]; //前5名学校的编号 
}p[21]; 
struct school //表示学校的结构体 
{ 
	int num; 
	string name; //学校名称 
	int score; //学校总分 
	int male; //男子总分 
	int female; //女子总分 
}sch[21]; 

int a[101][101]; 
int integral[5]={7,5,3,2,1}; 

void input() 
{ 
	int i,j,y,x; 
	printf("输入学校数目:"); 
	y=0; 
	while(1) 
	{ 
		scanf("%d",&n); 
		if(n>=1&&n<=20)y=1; 
		if(y)break; 
		else printf("输入数据有误,请重新输入:"); 
	} 
	for(i=1;i<=n;i++) 
	{ 
		printf("输入第%d个学校的名称:",i); 
		cin>>sch[i].name; 
		sch[i].score=0; 
		sch[i].female=0; 
		sch[i].male=0; 
		sch[i].num=i; 
	} 
	printf("输入男子项目数和女子项目数:"); 
	y=0; 
	while(1) 
	{ 
		scanf("%d%d",&m,&w); 
		if(m<=20&&m>=1&&w<=20&&w>=1)y=1; 
		if(y)break; 
		else printf("输入数据有误,请重新输入:"); 
	} 
	for(i=1;i<=m+w;i++) 
	{ 
		printf("输入第%d个项目的名称:\n",i); 
		cin>>p[i].name; 
		printf("输入第%d个项目的前5名的学校编号:\n",i); 
		for(j=1;j<=5;j++) 
		{ 
			y=0; 
			while(1) 
			{ 
				scanf("%d",&x); 
				if(x>=1&&x<=20)y=1; 
				if(y)break; 
				else printf("输入数据有误,请重新输入:"); 
			} 
			p[i].snum[j]=x; 
			sch[x].score+=integral[j-1]; 
			if(i<=m)
				sch[x].male+=integral[j-1]; 
			else 
				sch[x].female+=integral[j-1]; 
		} 
	} 
} 

void print(int i) 
{ 
	cout<<sch[i].num<<setw(13)<<sch[i].name<<setw(8)<<sch[i].score<<setw(9) 
	<<sch[i].male<<setw(10)<<sch[i].female<<endl; 
} 

void bianhao() //按编号排序 
{ 
	int i,j; 
	school t; 
	for(i=1;i<n;i++) 
	{ 
		for(j=i;j<=n;j++)
 
		if(sch[i].num>sch[j].num) 
		{
			t=sch[i];
			sch[i]=sch[j];
			sch[j]=t;
		} 
	} 
	printf("\n按编号排列:\n"); 
	printf("编号 学校名称 总分 男子总分 女子总分\n"); 
	for(i=1;i<=n;i++) 
	print(i); 
} 

void zongfen() //按学校总分排序 
{ 
	int i,j; 
	school t; 
	for(i=1;i<n;i++) 
	{ 
		for(j=i;j<=n;j++) 
		if(sch[i].score<sch[j].score) 
		{
			t=sch[i];
			sch[i]=sch[j];
			sch[j]=t;
		} 
	} 
	printf("\n按学校总分排列:\n"); 
	printf("编号 学校名称 总分 男子总分 女子总分\n"); 
	for(i=1;i<=n;i++) 
	print(i); 
} 

void malezf() //按学校男总分排序 
{ 
	int i,j; 
	school t; 
	for(i=1;i<n;i++) 
	{ 
		for(j=i;j<=n;j++) 
		if(sch[i].male<sch[j].male) 
		{
			t=sch[i];
			sch[i]=sch[j];
			sch[j]=t;
		} 
	} 
	printf("\n按学校男子总分排列:\n"); 
	printf("编号 学校名称 总分 男子总分 女子总分\n"); 
	for(i=1;i<=n;i++) 
	print(i); 
} 
void femalezf() //按学校女总分排序 
{ 
	int i,j; 
	school t; 
	for(i=1;i<n;i++) 
	{ 
		for(j=i;j<=n;j++) 
		if(sch[i].female<sch[j].female) 
		{
			t=sch[i];
			sch[i]=sch[j];
			sch[j]=t;
		} 
	} 
	printf("\n按学校女子总分排列:\n"); 
	printf("编号 学校名称 总分 男子总分 女子总分\n"); 
	for(i=1;i<=n;i++) 
	print(i); 
	cout<<endl; 
} 
void cxsch() //查询学校信息 
{ 
	int i,y,s; 
	printf("输入需要查询的学校编号:"); 
	y=0; 
	while(1) 
	{ 
		scanf("%d",&s); 
		if(s>=1&&s<=n)y=1; 
		if(y)
			break; 
		else 
			printf("输入数据有误,请重新输入:"); 
	} 
	printf("该学校相关信息:\n"); 
	printf("编号 学校名称 总分 男子总分 女子总分\n"); 
	for(i=1;i<=n;i++) 
	{ 
		if(sch[i].num==s) 
		{ 
			print(i); 
			break; 
		} 
	} 
	cout<<endl; 
} 
void cxxm() //查询项目信息 
{ 
	int i,y,s; 
	printf("输入需要查询的项目编号:"); 
	y=0; 
	while(1) 
	{ 
		scanf("%d",&s); 
		if(s>=1&&s<=n)y=1; 
		if(y)
			break; 
		else 
			printf("输入数据有误,请重新输入:"); 
	} 
	cout<<p[s].name<<"前5名学校编号及名称为:"<<endl; 
	printf("名次 编号 学校名称\n"); 
	for(i=1;i<=5;i++) 
	cout<<" "<<i<<" "<<p[s].snum[i]<<setw(12)<<sch[ p[s].snum[i] ].name<<endl; 
	cout<<endl; 
} 

void solve() 
{ 
	int z; 
	while(1) 
	{ 
		printf("\n选择您需要的操作(选择序号):\n"); 
		printf("1.按学校编号排序输出\n"); 
		printf("2.按学校总分排序输出\n"); 
		printf("3.按学校男总分排序输出\n"); 
		printf("4.按学校女总分排序输出\n"); 
		printf("5.查询某个学校成绩\n"); 
		printf("6.查询某个项目成绩\n"); 
		printf("7.结束\n\n"); 
		scanf("%d",&z); 
		if(z==1)
			bianhao(); 
		if(z==2)
			zongfen(); 
		if(z==3)
			malezf(); 
		if(z==4)
			femalezf(); 
		if(z==5)
			cxsch(); 
		if(z==6)
			cxxm(); 
		if(z==7)
			break; 
	} 
} 
int main() 
{ 
	input(); 
	solve(); 
	return 0; 
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -