• 汽车收费 C++ PTA


    7-1 汽车收费(10 分)

    现在要开发一个系统,管理对多种汽车的收费工作。 给出下面的一个基类框架

    class Vehicle

    { protected:

    string NO;//编号

    public:

    virtual void display()=0;//输出应收费用

    }

    以Vehicle为基类,构建出Car、Truck和Bus三个类。

    Car的收费公式为: 载客数8+重量2

    Truck的收费公式为:重量*5

    Bus的收费公式为: 载客数*3

    生成上述类并编写主函数,要求主函数中有一个基类Vehicle指针数组,数组元素不超过10个。

    Vehicle *pv[10];

    主函数根据输入的信息,相应建立Car,Truck或Bus类对象,对于Car给出载客数和重量,Truck给出重量,Bus给出载客数。假设载客数和重量均为整数

    输入格式:每个测试用例占一行,每行给出汽车的基本信息,每一个为当前汽车的类型1为car,2为Truck,3为Bus。接下来为它的编号,接下来Car是载客数和重量,Truck给出重量,Bus给出载客数。最后一行为0,表示输入的结束。 要求输出各车的编号和收费。

    提示:应用虚函数实现多态

    输入样例

    1 002 20 5

    3 009 30

    2 003 50

    1 010 17 6

    0

    输出样例

    002 170

    009 90

    003 250

    010 148

    #include<iostream>  
    #include <string>  
    using namespace std;  
    
    /********************************/
    /* 李娜娜!!!我爱你!!!        */
    /*                ——静静         */ 
    /********************************/
    
    class Vehicle           // 父类、基类  Vehicle
    {  
    protected:              // 安全属性 
        string NO;          // 编号  
    public:                  // 公共属性 
        Vehicle(string n) // 获取编号 
        {
            NO = n;  
        }  
        virtual int money()=0;//计算应收费用  
    };  
      
    class Car:Vehicle        // 子类Car,继承父类Verhicle 
    {  
        public:  
            int guest,weight;  
            Car(string no1,int guest1,int weight1):Vehicle(no1)  
            {   
                weight=weight1;  
                guest=guest1;  
            }  
            int money()  
            {     
                return guest*8+weight*2;  //  载客数8+重量2 
            }  
    };   
    
    class Truck:Vehicle  // 子类Truck,继承父类Verhicle  
    {  
            public:  
            int weight;  
            Truck(string no1,int weight1):Vehicle(no1)  
            {   
                weight=weight1;  
            }  
            int money()  
            {     
                return weight*5;  // 重量*5
            }  
    };  
    
    class Bus:Vehicle    // 子类Bus,继承父类Verhicle 
    {   public:  
            int guest;  
            Bus(string no1,int guest1):Vehicle(no1)  
            {     
                guest=guest1;  
            }  
            int money()  
            {     
                return guest*3;  // 载客数*3
            }  
    };  
    
    int main()  
    {  
        Car car("",0,0);  // 实例化对象类,初始化Car的 载客数量,重量  
        Truck truck("",0);  
        Bus bus("",0);
          
        int i, repeat, type, weight, guest;  
        string no;  
        while(cin >> type )
           
           {
            if(type == 0)
                break;else switch(type) { case 0: break; // 输入0退出的功能没有成功 case 1: cin >> no >> guest >> weight; // 获取 Car的 载客数量,重量 car = Car(no, guest, weight); cout << no << ' ' << car.money() << endl; // 输出收费 break; case 2: cin >> no >> weight; // 获取Truck 的重量 truck = Truck(no, weight); cout << no << ' ' << truck.money() << endl; break; case 3: cin >> no >> guest; // 获取Bus的载客数 bus = Bus(no, guest); cout << no << ' ' << bus.money() << endl; break; } } return 0; }

    注:程序可能不能按要求正确运行,因为我笨啊!


  • 相关阅读:
    大数加法、乘法实现的简单版本
    hdu 4027 Can you answer these queries?
    zoj 1610 Count the Colors
    2018 徐州赛区网赛 G. Trace
    1495 中国好区间 尺取法
    LA 3938 动态最大连续区间 线段树
    51nod 1275 连续子段的差异
    caioj 1172 poj 2823 单调队列过渡题
    数据结构和算法题
    一个通用分页类
  • 原文地址:https://www.cnblogs.com/chuijingjing/p/9044599.html
Copyright © 2020-2023  润新知