PAT A1083リストグレード(25分)

トピックリンクhttps://pintia.cn/problem-sets/994805342720868352/problems/994805383929905152

题目描述
名前、IDおよびグレードとNの生徒のレコードのリストを与えられました。あなたが成績が一定の間隔であるそのうち、それらの生徒のレコードを非増加のために、グレードに関してレコードをソートすることになって、出力されています。

输入
各入力ファイルは、1つのテストケースが含まれています。各ケースは、以下の形式で与えられます。

N
name[1] ID[1] grade[1]
name[2] ID[2] grade[2]
... ...
name[N] ID[N] grade[N]
grade1 grade2

名前[i]とID [i]には、スペースのないせいぜい10文字の文字列、グレード[i]としている。ここで、[0、100]の整数であり、グレード1およびgrade2はグレードの区間の境界です。全学年が異なっていることが保証されています。

输出
各テストケースのためにあなたを出力すべき成績が与えられた区間[グレード1、grade2]であり、非増加順になっていたの生徒の記録。各生徒のレコードは1スペースで区切られた学生の名前やID、行を占めています。代わりに、その間隔、出力NONEでいない生徒のグレードがある場合。

サンプル入力
4
トムCS000001 59
ジョーMath990112 89
マイクCS991301 100
メアリーEE990830 95
60 100

サンプル出力
マイクCS991301
メアリーEE990830
ジョーMath990112

コード

#include <cstdio>
#include <algorithm>

using namespace std;

struct student {
	char name[20];
	char id[20];
	int grade;
}stu[110];

bool cmp(student a, student b) {
	return a.grade > b.grade;
}

int main(){
	int n, flag = 1;
	scanf("%d", &n);
	for(int i = 0; i < n; i++)
		scanf("%s %s %d", stu[i].name, stu[i].id, &stu[i].grade);
	sort(stu, stu + n, cmp);
	int min, max;
	scanf("%d%d", &min, &max);
	for(int i = 0; i < n; i++) {
		if(stu[i].grade >= min && stu[i].grade <= max) {
			printf("%s %s\n", stu[i].name, stu[i].id);
			flag = 0;
		}
	}
	if(flag)
		printf("NONE\n");
	return 0;
}
公開された288元の記事 ウォン称賛12 ビュー20000 +

おすすめ

転載: blog.csdn.net/Rhao999/article/details/104712588