1022. 车辆选择(继承)

本文详细介绍了车辆类(vehicle)及其派生类小车类(car)和卡车类(truck)的构造与特性,包括车轮个数、车重、车载人数及载重效率等关键信息,通过输入车辆基本信息建立对象并输出其详细信息。

有一个汽车类vehicle,它具有一个需传递参数的构造函数,汽车类vehicle中的数据成员为:车轮个数wheels和车重weight放在保护段中,汽车类vehicle中的公有成员函数为:get_wheels()(返回车轮个数的值)、get_weight()(返回车重的值)、wheel_load()(返回每个轮胎的载重量的值:weight/wheels)、print()(输出车轮的个数和车重的公斤数);
小车类car是vehicle类的派生类,它具有一个需传递参数的构造函数,小车类car中的私有数据成员为:车载人数passenger_load,小车类car中的公有成员函数为:get_passengers()(返回车载人数的值)、print()(输出小车车轮的个数和车重的公斤数以及车载人数的个数);
卡车类truck是vehicle类的派生类,它具有一个需传递参数的构造函数,卡车类truck中的私有数据成员为:载人数passenger_load和载重量payload,卡车类truck中的公有成员函数为:get_passengers()(返回车载人数的值)、efficiency()(返回卡车的载重效率的值:payload/(payload+weight)、print()(输出卡车车轮的个数和车重的公斤数以及车载人数的个数和卡车的载重效率的值))。
生成上述类并编写主函数,根据输入的车辆基本信息,建立车辆对象,并能计算输出该车辆的基本信息。
输入格式:测试输入包含一个测试用例,每一行给出一个车辆的基本信息,每行的第一个字符处为当前车辆的类型,第二个数字为当前车辆的编号,若车辆为vehicle,后面跟随两个数字分别为wheels和weight,若车辆为car,后面跟随三个数字分别为wheels,weight和车载人数,若车辆为truck,后面跟随四个数字分别是wheels,weight、车载人数和载重量。(以上数字均为整型)。-1表示输入结束,相应结果不要输出。请注意输出格式,按照输入顺序进行编号
说明:本题中轮胎载重量、载重效率若需输出保留小数点后两位。
输入样例:
vehicle 101 4 1900
car 201 4 2000 5
truck 301 6 3000 2 9000
car 202 4 1800 4
-1

输出样例:
The 1st object is Vehicle No. 101: weight 1900 Kg and wheels 4
The 2nd object is Car No. 201: passenger_load 5 weight 2000 Kg and wheels 4
The 3rd object is Truck No. 301: passenger_load 2 weight 3000 Kg wheels 6 and efficiency 0.75
The 4th object is Car No. 202: passenger_load 4 weight 1800 Kg and wheels 4



时间限制
1000 ms
内存限制
65536 kB
代码长度限制
8192 B
判题程序
Standard
来源
继承


#include<iostream>
#include<iomanip>
using namespace std;
class vehicle
{
      protected:
                float wheels;
                float weight;
      public:
             vehicle(float wh,float we):wheels(wh),weight(we){};
             float get_wheels(){return wheels;}
             float get_weight(){return weight;}
             float wheel_load(){return weight/wheels;}
             void print();
};
void vehicle::print()
{
     cout<<"weight "<<weight<<" Kg and wheels "<<wheels<<endl;
}
class car:public vehicle
{
      int passenger_load;
      public:
             car(float wh,float we,int p):vehicle(wh,we),passenger_load(p){};
             int get_passenger(){return passenger_load;}
             void print();
             
};
void car::print()
{
     cout<<"passenger_load "<<passenger_load<<" weight "<<weight<<" Kg and wheels "<<wheels<<endl;
}
class truck:public vehicle
{
      int passenger_load;
      int payload;
      public:
             truck(float wh,float we,int p,int l):vehicle(wh,we),passenger_load(p),payload(l){};
             int get_passengers(){return passenger_load;}
             float efficiency(){return payload/(payload+weight);}
             void print();
};
void truck::print()
{
     cout<<"passenger_load "<<passenger_load<<" weight "<<weight<<" Kg wheels "<<wheels<<" and efficiency "<<setiosflags(ios::fixed)<<setprecision(2)<<efficiency()<<setprecision(0)<<endl;
}
int main()
{
    string ty;
    int num,wl,w,p,q,i=1;
    cin>>ty;
    while(ty!="-1")
    {
      cin>>num>>wl>>w;
      cout<<"The "<<i<<"";
      if(i==1)
        cout<<"st";
        else
         if(i==2)
           cout<<"nd";
           else
            if(i==3)
              cout<<"rd";
              else
                cout<<"th";
      i++;
      cout<<" object is ";
      if(ty=="vehicle")
      {
        cout<<"Vehicle"<<" No. "<<num<<": ";
        vehicle t(wl,w);
        t.print();
      }
      if(ty=="car")
      {
        cin>>p;
        cout<<"Car"<<" No. "<<num<<": ";
        car t(wl,w,p);
        t.print();
      }
      if(ty=="truck")
      {
        cin>>p>>q;
        cout<<"Truck"<<" No. "<<num<<": ";
        truck t(wl,w,p,q);
        t.print();
      }
      cin>>ty;
    }
    return 0;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值