有时候思路可能已经有了,但是实现的方式却会让你的代码和别人的差别很大。
sort函数还是要多加练习,要包含头文件algorithm。
#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;
struct record{
char id[10];
char name[10];
int grade;
}r[100005];
bool cmpbyid(record a,record b){
return strcmp(a.id,b.id)<0;
}
bool cmpbyname(record a,record b){
if(!strcmp(a.name,b.name))
return strcmp(a.id,b.id)<0;
else
return strcmp(a.name,b.name)<0;
}
bool cmpbygrade(record a,record b){
if(a.grade==b.grade)
return strcmp(a.id,b.id)<0;
else
return (a.grade-b.grade)<0;
}
int main()
{
int N,C;
int casenum=0;
while(cin>>N>>C&&N!=0){
casenum++;
for(int i=0;i<N;i++)
cin>>r[i].id>>r[i].name>>r[i].grade;
if(C==1)
sort(r,r+N,cmpbyid);
else if(C==2)
sort(r,r+N,cmpbyname);
else
sort(r,r+N,cmpbygrade);
cout<<"Case "<<casenum<<":"<<endl;
for(int i=0;i<N;i++)
cout<<r[i].id<<" "<<r[i].name<<" "<<r[i].grade<<endl;
}
return 0;
}