PAT A1028リストの並べ替え(25分)

Excelは、任意の列に基づいてレコードをソートすることができます。今、あなたは、この機能を模倣することになっています。

入力仕様:

各入力ファイルには、1つのテストケースが含まれています。各場合について、最初の行は、2つの整数N(≤10含ま5)とを、Nはレコードの数であり、Cはあなたが持つレコードをソートすることになっていることをカラムであるC、。そして、N行は、それぞれの生徒のレコードが含まれ、従ってください。学生の記録は、彼または彼女の明確なID(6桁の数字)、名前(スペースなしなし以上8文字以内の文字列)、およびグレード(0〜100の整数、を含む)で構成されています。

出力仕様:

各テストケースのために、出力N行でソート結果。すなわち、C = 1であれば、その後レコードがIDのに従って昇順にソートしなければなりません。C = 2の場合は、次に記録を名前に係る非減少順にソートされなければなりません。及びC = 3の場合、レコードは、等級に応じて非減少順にソートされなければなりません。同じ名前またはグレードを持っているいくつかの学生がある場合、彼らは彼らのIDの増加順にに従ってソートされなければなりません。

サンプル入力1:

1 3つの
000007ジェームズ85
000010エイミー90
000001ゾーイ60

サンプル出力1:

000001ゾーイ60の
000007ジェームズ85
000010エイミー90

サンプル入力2:

2 4つの
000007ジェームズ85
000010エイミー90
000001ゾーイ60
000002ジェームズ98

出力例2:

000010 90エイミー
・ジェームズ98 000002
ジェームズ・85 000007
ゾーイ60 000001

サンプル入力3:

3 4つの
000007ジェームズ85
000010エイミー90
000001ゾーイ60
000002ジェームズ90

サンプル出力3:

000001ゾーイ60の
000007ジェームズ85
000002ジェームズ・90
000010エイミー90

質問の意味:

参照の一種に、学生の総数は、列の数を入力し、進歩的な学生のID、名前、スコア入力し、最後の出力シーケンシング後の学生のID、名前、スコアを。

アイデア:

(1)ID IDが出力に入力され、代わりに整数のIDが文字列の形式で格納されている生徒、生徒のレコードID、名前、スコア、の構造を定義000001 000001の代わりに1である
上記(2)列の数は、参照の並べ替え、その後、参照の一種に列数の後に、すべての学生のための出力をソートするために決定されたCの値に応じて、設計比較機能CMP1、CMP2、CMP3をクリックします。

コード:

#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;

struct student{
	char id[10],name[10];
	int grade;
}stu[100010];

bool cmp1(student a,student b){
	return strcmp(a.id,b.id)<0;
}
bool cmp2(student a,student b){
	if(strcmp(a.name,b.name)!=0)
		return strcmp(a.name,b.name)<0;
	else
		return strcmp(a.id,b.id)<0;
}
bool cmp3(student a,student b){
	if(a.grade!=b.grade)
		return a.grade<b.grade;
	else
		return strcmp(a.id,b.id)<0;
}

int main(){
	int N,C;
	scanf("%d %d",&N,&C);
	for(int i=0;i<N;i++){
		scanf("%s %s %d",stu[i].id,stu[i].name,&stu[i].grade);
	}
	if(C==1){
		sort(stu,stu+N,cmp1);
	}else if(C==2){
		sort(stu,stu+N,cmp2);
	}else{
		sort(stu,stu+N,cmp3);
	}
	for(int i=0;i<N;i++){
		printf("%s %s %d\n",stu[i].id,stu[i].name,stu[i].grade);
	} 
	return 0;
}
公開された26元の記事 ウォンの賞賛0 ビュー468

おすすめ

転載: blog.csdn.net/PanYiAn9/article/details/104236586