PAT A 1083. List Grades (25)

题目

Given a list of N student records with name, ID and grade. You aresupposed to sort the records with respect to the grade in non-increasing order,and output those student records of which the grades are in a given interval.

Input Specification:

Each input file contains one test case. Each case is given in thefollowing format:

N

name[1] ID[1] grade[1]

name[2] ID[2] grade[2]

... ...

name[N] ID[N] grade[N]

grade1 grade2

where name[i] and ID[i] are strings of no more than 10 characters with nospace, grade[i] is an integer in [0, 100], grade1 and grade2 are the boundariesof the grade's interval. It is guaranteed that all the grades are distinct.

Output Specification:

For each test case you should output the student records of which thegrades are in the given interval [grade1, grade2] and are in non-increasingorder. Each student record occupies a line with the student's name and ID,separated by one space. If there is no student's grade in that interval, output"NONE" instead.

Sample Input 1:

4

Tom CS000001 59

Joe Math990112 89

Mike CS991301 100

Mary EE990830 95

60 100

Sample Output 1:

Mike CS991301

Mary EE990830

Joe Math990112

Sample Input 2:

2

Jean AA980920 60

Ann CS01 80

90 95

Sample Output 2:

NONE

 

 直接模拟

 

代码:

#include <iostream>
#include <algorithm>
#include <string>
using namespace std;

struct student	//学生结构
{
	string name;
	string id;
	int grade;
};

bool cm(const student &s1,const student &s2);	//排序

int main()
{
	int n;
	cin>>n;
	student *stu=new student [n];

	int i;
	for(i=0;i<n;i++)	//输入
		cin>>stu[i].name>>stu[i].id>>stu[i].grade;
	sort(stu,stu+n,cm);	//排序
	int grade1,grade2,flag=0;	//分数段,是否有输出标志
	cin>>grade1>>grade2;
	for(i=0;i<n;i++)
	{
		if(stu[i].grade>=grade1&&stu[i].grade<=grade2)
		{
			cout<<stu[i].name<<" "<<stu[i].id<<endl;
			flag=1;
		}
	}
	if(flag==0)
		cout<<"NONE";
	delete [] stu;

	return 0;
}

bool cm(const student &s1,const student &s2)
{
	return s1.grade>s2.grade;
}


 

 

 

 

 

 

 

你可能感兴趣的:(C++,pat)