题目描述
某驾校对学车的学员做出以下设计:
(1)定义CPerson类,包含数据成员:姓名,联系电话。由CPerson作为基类派生出学员类。
(2)学员类表示普通学员,他们可以在场地A练车,一天最多获得一个学时(即使练习时长超过一小时也只能按一个学时计算)
学员类新增一个数据成员Atime,长度为12的整数数组,表示连续12天,在A场地每天练习的时长,时长单位按分钟计算
学员类新增一个成员函数void check(),检查学员是否达到预约科目二考试资格的标准,并输出相应提示信息。
预约资格是:在每12天的周期内,总学时达到10小时可以预约。练习每一小时计一学时,不足一小时计0
(3)学员类派生出VIP学员类,他们可以在场地B练车,一天最多获得两个学时(即使练习时长超过两小时也只能按两个学时计算)。
VIP学员同样可以在A场地练车。AB场地练车获得学时可以叠加,即VIP学员一天最多获得3个学时。
VIP学员类新增一个数据成员Btime,长度为12的整数数组,表示连续12天中,在B场地每天练习的时长,时长单位按分钟计算
VIP学员类重载函数void check(),功能也是检查预约资格,只是学时计算要包含A和B场地。
输入
测试样例有t学员
每个学员的第一行先输入学员信息:类型(普通学员用F表示,VIP学员用V表示),姓名,电话。
如果是普通学员,接着只包含一行数据,第二行输入A场地的12天来每天的练习时长(共12个整数,单位为分钟)
如果是VIP学员,接着包含两行数据,第二行输入A场地的12天练习时长,第三行输入B场地的12天练习时长,每行都是12个整数。
输出
输出t行
调用check函数,输出一个每个学员是否能否预约科目二,并输出相关提示信息
输入样例1
3 F Wendy 13209871920 30 30 40 60 60 40 60 70 100 80 30 40 V Sarah 15081098293 170 80 0 50 60 90 110 0 40 60 30 100 0 0 90 0 0 0 0 130 0 0 0 66 V 张三 15030120983 80 0 0 30 20 0 40 0 30 150 0 0 0 10 10 0 0 10 0 20 0 0 150 160
输出样例1
Wendy未达到学时要求不能预约!电话13209871920 Sarah达到学时要求可以预约!电话15081098293 张三未达到学时要求不能预约!电话15030120983
思路分析
注意输入的时长按分钟计。
AC代码
代码语言:javascript复制#include"iostream"
#include"string"
using namespace std;
class CPerson
{
protected:
string name,phone;
public:
void datain()
{
cin>>name>>phone;
}
};
class NPerson:public CPerson
{
protected:
int Atime[12];
public:
void check()
{
float sum=0;
int i;
for(i=0;i<12;i )
{
cin>>Atime[i];
if(Atime[i]>60)
Atime[i]=60;
sum =Atime[i]/60;
}
if(sum>=10)
cout<<name<<"达到学时要求可以预约!电话"<<phone<<endl;
else
cout<<name<<"未达到学时要求不能预约!电话"<<phone<<endl;
}
};
class VIP:public NPerson
{
protected:
int Btime[12];
public:
void check()
{
float sum=0;
int i;
for(i=0;i<12;i )
{
cin>>Atime[i];
if(Atime[i]>60)
Atime[i]=60;
sum =Atime[i]/60;
}
for(i=0;i<12;i )
{
cin>>Btime[i];
if(Btime[i]>120)
Btime[i]=120;
sum =Btime[i]/60;
}
if(sum>=10)
cout<<name<<"达到学时要求可以预约!电话"<<phone<<endl;
else
cout<<name<<"未达到学时要求不能预约!电话"<<phone<<endl;
}
};
int main()
{
int num;
char kind;
cin>>num;
while(num--)
{
cin>>kind;
if(kind=='F')
{
NPerson f;
f.datain();
f.check();
}
else
{
VIP v;
v.datain();
v.check();
}
}
}