编程题#9:人群的排序和分类(C++程序设计第10周)
2016-02-16 21:59
513 查看
描述
对人群按照输入的信息进行排序和分类。
输入
第一行是整数t,表明一共t组数据. t < 20
对每组数据:
第一行是整数n,表示下面一共有n行。 0 < n < 100
下面的每行代表一个人。每行以一个字母开头,代表该人所属的类别,然后跟着一个整数,代表年龄。字母只会是 ‘A‘或‘B’ 。整数范围0到100。数据保证年龄都不相同。
输出
对每组输入数据,将这些人按年龄从小到大输出。每个人先输出类别,再输出年龄。每组数据的末尾加一行 “**”
样例输入
样例输出
源码
对人群按照输入的信息进行排序和分类。
#include <iostream> #include <set> #include <iterator> #include <algorithm> using namespace std; // 在此处补充你的代码 int main() { int t; cin >> t; set<A*,Comp> ct; while( t -- ) { int n; cin >> n; ct.clear(); for( int i = 0;i < n; ++i) { char c; int k; cin >> c >> k; if( c == 'A') ct.insert(new A(k)); else ct.insert(new B(k)); } for_each(ct.begin(),ct.end(),Print); cout << "****" << endl; } }
输入
第一行是整数t,表明一共t组数据. t < 20
对每组数据:
第一行是整数n,表示下面一共有n行。 0 < n < 100
下面的每行代表一个人。每行以一个字母开头,代表该人所属的类别,然后跟着一个整数,代表年龄。字母只会是 ‘A‘或‘B’ 。整数范围0到100。数据保证年龄都不相同。
输出
对每组输入数据,将这些人按年龄从小到大输出。每个人先输出类别,再输出年龄。每组数据的末尾加一行 “**”
样例输入
2 4 A 3 B 4 A 5 B 6 3 A 4 A 3 A 2
样例输出
A 3 B 4 A 5 B 6 **** A 2 A 3 A 4 ****
源码
#include <iostream> #include <set> #include <iterator> #include <algorithm> using namespace std; //在此处补充你的代码 class A { public: int age; char s; A(int a): age(a), s('A') {} A(int a, char str): age(a), s(str) {} }; class B : public A { public: B(int b):A(b, 'B') {} }; struct Comp { bool operator() (const A* a1, const A* a2) const { return a1->age < a2->age; } }; void Print(const A* a) { cout << a->s << " " << a->age << endl; } int main() { int t; cin >> t; set<A*, Comp> ct;//A*为指向A的指针 while(t--) { int n; cin >> n; ct.clear(); for (int i = 0; i < n; ++i) { char c; int k; cin >> c >> k; if (c == 'A') { ct.insert(new A(k));//new A(k)为动态内存分配,返回该内存空间的起始地址 } else { ct.insert(new B(k)); } } for_each(ct.begin(), ct.end(), Print); cout << "****" << endl; } return 0; }
相关文章推荐
- 编程题#8:计算整数k(C++程序设计第10周)
- 编程题#7:字符串排序(C++程序设计第10周)
- c++虚拟继承
- 编程题#6:MyString(C++程序设计第10周)
- 20160205.CCPP体系详解(0015天)
- 20160205.CCPP体系详解(0015天)
- C++查找数组中的最大值和最小值
- 20160203.CCPP体系详解(0013天)
- 20160204.CCPP体系详解(0014天)
- 20160203.CCPP体系详解(0013天)
- 20160204.CCPP体系详解(0014天)
- 20160202.CCPP体系详解(0012天)
- 20160202.CCPP体系详解(0012天)
- 编程题#5:计算数组的低3位之和(C++程序设计第10周)
- c++类的成员变量使用普通变量还是指针
- 用c语言代码编写的游戏“简易五子棋”
- 20160131.CCPP体系详解(0010天)
- 20160201.CCPP体系详解(0011天)
- 20160131.CCPP体系详解(0010天)
- 20160201.CCPP体系详解(0011天)