hnu结构体作业

【问题描述】输入若干个武将的信息,包括姓名、体力、智力和武力值,直到用户输入为‘#’,表示输入结束。再输入指标编号(1表示体力 2表示智力 3表示武力),根据该指标对所有将领进行从大到小排序,指标值相同的武将保持输入时的先后顺序不变,并将排序后的结果输出,每个信息之间用空格分隔。请自己实现排序算法。
【输入说明】
‘#’之前的每一行都包含四个信息,分别是姓名、体力、智力、武力;‘#’后一行的数字表示单项指标序号,如1表示按体力排序。

【输出说明】

将排序后的武将信息,按行输出,每行包含姓名、体力、武力、智力等四个数据,每个数据之间用单个空格分隔。

【样例输入】
guan 90 80 90
zhao 90 90 90
zhang 100 70 80
#
2

【样例输出】
zhao 90 90 90
guan 90 80 90
zhang 100 70 80

【样例说明】

按指标2——智力进行从大到小排序,武将"zhao"排在第一位,武将“zhang”排在第三位。

【特别说明】

要自己实现排序算法,不用调用sort函数。

ps:就不听他的,就写sort函数

#include<iostream>
#include<algorithm>
using namespace std;
struct military{
	string name;
	int ti,zhi,wu;
}m1[100];
bool cmp1(military a,military b){
	return a.ti>b.ti;
}
bool cmp2(military a,military b){
	return a.zhi>b.zhi;
}
bool cmp3(military a,military b){
	return a.wu>b.wu;
}
int main(){
	int i=0;
	while(true){
		cin >> m1[i].name;
		if(m1[i].name=="#") break;
		cin >> m1[i].ti >> m1[i].zhi >> m1[i].wu;
		i++;
	}
	int fl;cin >> fl;
	if(fl==1) sort(m1,m1+i,cmp1);
	if(fl==2) sort(m1,m1+i,cmp2);
	if(fl==3) sort(m1,m1+i,cmp3);
	for(int j=0;j<i;j++){
		cout << m1[j].name << " " << m1[j].ti << " " << m1[j].zhi << " " << m1[j].wu << endl;
	}
	return 0;
}

我想,有没有更短的代码给我学习一下哇。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值