题目描述
现在要开发一个系统,实现对多种汽车的收费工作。 汽车基类框架如下所示:
class Vehicle
{protected:
string no; //编号public:
virtual void display()=0; //应收费用
}
以Vehicle为基类,构建出Car、Truck和Bus三个类。
Car的收费公式为: 载客数*8+重量*2
Truck的收费公式为:重量*5
Bus的收费公式为: 载客数*30
生成上述类并编写主函数,要求主函数中有一个基类指针Vehicle *pv;用来做测试用。
主函数根据输入的信息,相应建立Car,Truck或Bus类对象,对于Car给出载客数和重量,Truck给出重量,Bus给出载客数。假设载客数和重量均为整数。
输入
第一行表示测试次数。从第二行开始,每个测试用例占一行,每行数据意义如下:汽车类型(1为car,2为Truck,3为Bus)、编号、基本信息(Car是载客数和重量,Truck给出重量,Bus给出载客数)。
输出
车的编号、应缴费用
样例查看模式
正常显示查看格式
输入样例1 <-复制
输出样例1
#include<iostream>
using namespace std;
class Vehicle
{
protected:
string no; //编号
public:
Vehicle() {};
Vehicle(string n)
{
no = n;
}
virtual void display() = 0; //应收费用
};
class car :public Vehicle
{
private:
int num;
int weight;
public:
car() {};
car(string no, int n, int w) :Vehicle(no)
{
num = n;
weight = w;
}
virtual void display()
{
cout << no << " " << num * 8 + weight * 2 << endl;
}
};
class truck :public Vehicle
{
private:
int weight;
public:
truck() {};
truck(string n, int w) :Vehicle(n)
{
weight = w;
}
virtual void display()
{
cout << no << " " << weight * 5 << endl;
}
};
class bus :public Vehicle
{
private:
int num;
public:
bus() {};
bus(string no, int n) :Vehicle(no)
{
num = n;
}
virtual void display()
{
cout << no << " " << num * 30 << endl;
}
};
int main()
{
int t;
cin >> t;
int type;
string no;
int num, weight;
while (t--)
{
cin >> type;
cin >> no;
if (type == 1)
{
cin >> num >> weight;
car c(no, num, weight);
c.display();
}
else if (type == 2)
{
cin >> weight;
truck t(no, weight);
t.display();
}
else
{
cin >> num;
bus b(no, num);
b.display();
}
}
return 0;
}