Problem C: 不同交通工具的速度

来源:互联网 发布:数据库设计原则和步骤 编辑:程序博客网 时间:2024/05/20 16:36

Problem C: 不同交通工具的速度

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 1685  Solved: 765
[Submit][Status][Web Board]

Description

不同交通工具的速度是不同的。针对自行车、摩托车和汽车分别建立类,来模拟这一情况。

定义Vechicle类,是所有交通工具的父类:

1. 属性int speed表示交通工具的一般速度。

2. 静态数据成员int numOfVechicles,表示创建的交通工具的数量。这个值只增不减。

3. 静态成员函数int getNumOfVechicles(),用于获取交通工具的数量。

4. 析构函数。输出“A vechicle is deleted.”

5. 纯虚函数void show().

定义Bike、MotoBike和Car三个类,它们都是Vechicle的子类,且具有:

1. 构造函数。

2. 重写show()函数,输出“A *'s speed is ? km/h.”,其中“*”是bike、motobike或car,根据所在类不同而不同。“?”是speed属性的值。

3. 析构函数。输出“A * is deleted.”,“*”的含义同上。

定义Person类,表示司机:

1. 数据成员string name,是人的姓名。

2. void drive(Vechicle&)方法,输出“$ drives”, 并调用Vechicle类的show()方法。其中“$”是name的值。

Input

第1行N>0,表示有N个测试用例。

每个测试用例包括一个不含空白符的字符串、一个字符和一个整数。

Output

见样例及题目描述。

Sample Input

3Tom B 15Jack M 50Mary C 100

Sample Output

In beginning, we have 0 vechicles.Tom drives. A bike's speed is 15km/h.A bike is deleted.A vechicle is deleted.Jack drives. A motobike's speed is 50km/h.A motobike is deleted.A vechicle is deleted.Mary drives. A car's speed is 100km/h.A car is deleted.A vechicle is deleted.At the end, we have 3 vechicles.
#include <bits/stdc++.h>using namespace std;class Vechicle{public:    int speed;    Vechicle(int speed):speed(speed){numOfVechicle++;}    static int numOfVechicle;    static int getNumOfVechicles()    {        return numOfVechicle;    }    virtual void show()=0;    virtual~Vechicle(){cout<<"A vechicle is deleted."<<endl;}};class Bike:public Vechicle{public:    Bike(int _s):Vechicle(_s){}    void show()    {        cout<<"A bike's speed is "<<speed<<"km/h."<<endl;    }    ~Bike(){cout<<"A bike is deleted."<<endl;}};class MotoBike:public Vechicle{public:    MotoBike(int _s):Vechicle(_s){}    void show()    {        cout<<"A motobike's speed is "<<speed<<"km/h."<<endl;    }    ~MotoBike(){cout<<"A motobike is deleted."<<endl;}};class Car:public Vechicle{public:    Car(int _s):Vechicle(_s){}    void show()    {        cout<<"A car's speed is "<<speed<<"km/h."<<endl;    }    ~Car(){cout<<"A car is deleted."<<endl;}};class Person{public:    string name;    Person(string name):name(name){}    void drive(Vechicle &v){cout<<name<<" drives. ";v.show();}};int Vechicle::numOfVechicle=0;int main(){    int cases, n;    char c;    string name;    Vechicle* vechicle;    cout<<"In beginning, we have "<<Vechicle::getNumOfVechicles()<<" vechicles."<<endl;    cin>>cases;    for (int i = 0; i < cases; i++)    {        cin>>name>>c>>n;        Person person(name);        switch (c)        {        case 'B':            vechicle = new Bike(n);            break;        case 'M':            vechicle = new MotoBike(n);            break;        case 'C':            vechicle = new Car(n);            break;        }        person.drive(*vechicle);        delete vechicle;    }    cout<<"At the end, we have "<<Vechicle::getNumOfVechicles()<<" vechicles."<<endl;    return 0;}

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 水泡破了很痒怎么办 有一块牙龈肿了怎么办 耳前瘘管有脓怎么办 睡歪脖子很痛怎么办 睡歪脖子怎么办小妙招 睡觉睡得脖子疼怎么办 睡久了后脑勺疼怎么办 腮帮肿了但不疼怎么办 吃硬东西腮帮痛怎么办 嘴巴长开旁边疼怎么办 晚上腿酸睡不着觉怎么办 吃酸的牙齿酸软怎么办 吃酸东西牙齿酸怎么办 拔完智齿神经疼怎么办 22岁腿关节疼痛怎么办 耳洞里面有硬块怎么办 耳洞发炎有硬块怎么办 小孩慢性扁桃体发炎怎么办大全 侧切伤口化脓了怎么办 狗狗伤口不愈合怎么办 狗后腿烂了化脓怎么办 乳腺增生腋下淋巴结肿大怎么办 手术刀口冒脓了怎么办 脚伤口感染肿了怎么办 皮外伤口不愈合怎么办 烫伤新皮红红的怎么办 脸上痘痘化脓了怎么办 痘痘引起的红肿怎么办 痘痘引起的硬块怎么办 痘痘化脓感染了怎么办 烫伤有脓了烂掉怎么办 烫伤起泡破皮了怎么办 一出汗就有狐臭怎么办 耳朵后面臭臭的怎么办 赤黑abo意外怀孕怎么办 qq忘记密保了怎么办 三星s8耗电太快怎么办 360云盘关闭照片怎么办 360云盘停止服务怎么办 房间湿度90%太高怎么办 天刀掠夺进错了怎么办