C++泛型编程(通讯录编排)
2016-01-26 15:51
351 查看
泛型编程(通讯录编排)
Time Limit(Common/Java):1000MS/3000MS Memory Limit:65536KByteTotal Submit:49 Accepted:14
Description
ACM集训队最近人气很旺,为了促进队员之间的交流,我们准备制作一个通讯录,每个队员的信息包括: tojid 电话 籍贯 出生年-月-日 各个字段均用英文字符和数字表示。使用空格分隔各个字段,每个字段不包含空格,如:crq的信息为: crq 660000 huangyan 1979-1-1 等到所有队员的资料收集完毕,我们想要编排通讯录以便于队员的查询,编排方式如下: 首先根据地名作为第一关键字进行字典序排序,由于每年老乡之间都要为队友庆祝生日,因此将生日作为第二关键字进行递增排序。也许你在老乡之间能够找到一个非常有缘的队友即你们的生日是同一天,那么就根据tojid作为第三关键字进行字典序排序,由于tojid是唯一的,因此总能排序。我们确信今后将有大量的新队友加入,因此为了能一劳永逸,请你帮我们编程完成这个任务。
Input
输入数据有n+1行,第一行为集训队队员的总数n (n<=100),下面的n行为每个队员的信息,格式见样例。
Output
输出编排后的结果。
Sample Input
5
crq 660000 huangyan 1979-1-1
carter 660000 huangyan 1979-1-1
tzc 668888 linhai 1990-1-11
wk 666666 ningbo 1986-10-1
metoo 665567 jiaojiang 1969-1-13
Sample Output
carter 660000 huangyan 1979-1-1
crq 660000 huangyan 1979-1-1
metoo 665567 jiaojiang 1969-1-13
tzc 668888 linhai 1990-1-11
wk 666666 ningbo 1986-10-1
代码块:
#include <algorithm> #include <iostream> #include <iomanip> #include <cstring> #include <vector> using namespace std; typedef struct book { char n[30],a[30],p2[30]; int p; }book; bool compare(const book &a,const book &b) { if ( strcmp(a.a,b.a)<0 ) return 1; else if( strcmp(a.a,b.a)>0 ) return 0; else { if ( strcmp(a.p2,b.p2)<0 ) return 1; else if( strcmp(a.a,b.a)>0 ) return 0; else { if ( strcmp(a.n,b.n)<0 ) return 1; else return 0; } } } int main() { int n,i,j; vector <book> v; char s[100]; book b; gets(s); sscanf(s,"%d",&n); // if (strlen(s)==0) break; for (i=0; i<n; i++) { gets(s); sscanf(s,"%s%d%s%s",b.n,&b.p,b.a,b.p2); v.push_back(b); } sort(v.begin(),v.end(),compare); for (i=0; i<n; i++) cout<<left<<v[i].n<<" "<<v[i].p <<" "<<v[i].a<<" "<<v[i].p2<<endl; // cout<<endl; v.clear(); return 0; }
相关文章推荐
- 深入解析C++程序中激发事件和COM中的事件处理
- C++:泛型编程(统计同成绩学生人数)
- C++:泛型编程(题库重整)
- C++事件处理中__event与__raise关键字的用法讲解
- C++面试题(一)
- C++:泛型编程 map(统计人数)
- C++ 模板与泛型(2)
- C++:泛型编程 map(查询成绩)
- C++ 模板与泛型(1)
- 使用String逐个赋值字符
- C++事件处理中的__hook与__unhook用法详解
- C语言 文件操作4--文件结构体FILE的理解以及缓冲区再讲
- c++ sort()qsort()
- c/c++ 英语专业词汇表
- 为setup.py添加c:c++ 头文件或者库的搜索路径
- 深入浅出Windows 10 通用应用开发学习笔记(C++) 3-1
- Boost 学习之算法篇 is_partitioned
- XML文件的解析、读取和生成(C/C++、win7、VS2010)
- 详解C++编程中断言static_assert的使用
- C++下std::pair的使用?