Description
/* 请定义一个结构体TPassenger,定义一个类CVehicle,并从该类以public方式派生出类CBus。具体要求如下:
* 1)结构体TPassenger有两个属性,一个保存姓名(std::string类型),一个保存年龄(int)
* 2)类CVehicle只有一个protected型属性,该属性是一个列表,列表中每个元素都是TPassenger类型,请用std::vector实现该列表
* 3)类CVehicle没有默认构造函数,只有一个带参数的构造函数,该构造函数只有一个参数(std::vector<TPassenger>类型),
* 该构造函数的作用是将参数中的列表内容复制给类CVehicle的私有属性(即2)中提到的列表)。
* 4)类CVehicle只有一个公有的成员函数,void show_passenger_info(),作用是将私有属性的内容输出,输出格式如下:
* 列表元素1的姓名属性,列表元素1的年龄属性,列表元素2的姓名属性,列表元素2的年龄属性,......
* 即将列表中每个元素的姓名和年龄信息逐个输出显示,用英文逗号分隔,前后都没有空格,结尾输出一个回车。
* 5)类CBus在类CVehicle基础上新增了一个私有属性,该属性保存车次信息(std::string类型)
* 6)类CBus没有默认构造函数,只有一个带参数的构造函数,该构造函数有2个参数,
* 第一个是std::vector<TPassenger>类型(其作用同3)中的描述),第二个是std::string类型,代表车次信息
# 注意:要在该派生类的构造函数中调用基类的构造函数。
* 7)类CBus新增了一个公有的函数,void sort_passenger(bool bAscend),作用是将父类的列表按元素的年龄值排序,
* 其中参数bAscend若为真,则结果为升序,否则为降序。
* 8)类CBus重载函数show_passenger_info,作用跟父类的同名函数基本相同,区别是在输出字符串最前面加上
* 车次信息,并用英文的冒号与后面的内容分隔。
*/
// 请把下面的所有代码复制到你的开发环境中,按照上面的要求填充所需要的代码,然后提交该代码进行测试。(注意:main函数中的内容是不能修改的,违者0分)
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
/*
* 请在main函数之前,填写你的代码
*/
/// 下面的main函数代码你不需要阅读,也【不能修改;一旦改动,本题0分】。
int main()
{
int mode = -1;
int num = -1;
vector<TPassenger> plist;
string name;
int age;
do
{
cin >> mode;
if (mode != 1 && mode != 2)break;
cin >> num;
plist.clear();
for (int i = 0; i < num; i++)
{
cin >> name >> age;
TPassenger p = { name, age };
plist.push_back(p);
}
if (mode == 1)
{
CVehicle v(plist);
v.show_passenger_info();
}
else
{
string bus_num;
cin >> bus_num;
CBus b(plist, bus_num);
b.sort_passenger(true);
b.show_passenger_info();
}
} while (true);
return 0;
}
Input
输入数据的格式你不需要仔细研读,因为main函数中的内容不需要你写,也不能改。
输入数据可以包含多个测试用例。如果开头是1就是创建CVehicle类,如果开头是2就是创建CBus类,如果是其他值就退出程序。这个开头的数字后面就是多个TPassenger实例的内容,先是一个数字代表实例数,然后就是每个实例的信息,都是名字在前,年龄在后。如果是对应CBus类,则实例内容末尾还要加上车次信息。
Output
输出数据的格式你也不需要仔细研读,因为main函数中的内容不需要你写,也不能改。
输出数据就是显示每个测试用例中CVehicle或CBus类型对象的show_passenger_info函数的输出内容。如果是CBus类型对象,则在输出前先调用该对象的排序函数。
1
2
lei 43 cai 23
2
2
lei 43 cai 23
ok
0
lei,43,cai,23
ok:cai,23,lei,43
HINT
请把题干中的所有代码复制到你的开发环境中,按照上面的要求填充所需要的代码,然后提交该代码进行测试。注意:main函数中的内容是不能修改的,违者0分