
裁判测试程序样例:
#include <iostream>
#include <string>
using namespace std;
const float Car_Price= 8;
const float Bus_Price= 10;
const float Truck_Price=15;
class Vehicle{
protected:
float price;
int minute;
public:
virtual float computeFee(){return 20.0f*minute/60;};
virtual string getType(){return "unknow"; };
float getPrice();
void setPrice(float _price);
int getMinute();
void setMinute(int _minute);
Vehicle(float _price,int _minute);
Vehicle(){
};
};
/* 你的代码将被嵌入这里 */
int main(){
int n,minute; //停车辆次,时长
char type;
Vehicle *vp;
Parker p;
cin>>n;
for(int i=1;i<=n;i++){
cin>>type>>minute;
switch(type){
case 'c':vp=new Car(minute);break;
case 't':vp=new Truck(minute);break;
case 'b':vp=new Bus(minute);break;
default: vp=new Vehicle();vp->setMinute(minute);
}
cout<<"type:"<<vp->getType() <<" minute:"<<vp->getMinute()<<" fee:"<<vp->computeFee()<<endl;
p.park(vp);
delete vp;
}
cout<<"sum:"<<p.getSum()<<endl;
return 0;
}
输入样例:
输入的第一行为进入停车场的车辆总数n. 接下来有n行输入,每行为一辆车的类型及停车时长,时长单位为分钟,类型’c’代表Car,类型’b’代表Bus,类型’t’代表Truck,其他字符则为未知类型。
3
c 40
t 5
b 40
输出样例:
输出为n+1行,前n行输出每辆车的类型,停车时长,收取的费用,最后一行输出目前停车场得到的停车费总额。
type:car minute:40 fee:8
type:truck minute:5 fee:15
type:bus minute:40 fee:10
sum=33
偷懒
直接测试程序copy到vs,要补充的自动划上线了(doge)
- 先是补完 Vehicle类 里面的函数
- 定义 Parker类 用于得出停车费总额
- 定义 Car,Truck,Bus类继承 Vehicle类
代码:
//补充 Vehicle类的函数
float Vehicle::getPrice() { return price; }
void Vehicle::setPrice(float _price) { price = _price; }
int Vehicle::getMinute() { return minute; }
void Vehicle::setMinute(int _minute) { minute = _minute; }
Vehicle::Vehicle(float _price, int _minute) { price = _price; minute = _minute; }
//停车场类
class Parker
{
double sum=0;
public:
void park(Vehicle* v) { sum += v->computeFee(); }
double getSum() { return sum; }
};
//轿车类
class Car :public Vehicle
{
public:
Car(int m) :Vehicle(Car_Price, m) {};
virtual string getType() { return "car"; }
virtual float computeFee()
{
if (minute <= 30) price = 0;
else
{
int times = (minute - 30) / 60 + 1;
price = times * Car_Price;
return price;
}
}
};
//货车类
class Truck :public Vehicle
{
public:
Truck(int m) :Vehicle(Truck_Price, m) {};
virtual string getType() {return "truck";}
virtual float computeFee()
{
int hour = minute / 60;
if (hour * 60 < minute) hour += 1;
return hour * price;
}
};
//客车类
class Bus :public Vehicle
{
public:
Bus(int m) :Vehicle(Bus_Price, m) {};
virtual string getType() { return "bus"; }
virtual float computeFee()
{
int hour = minute / 30;
if (hour * 30 < minute) hour += 1;
return hour * price / 2;
}
};
本文介绍了一个基于C++实现的停车场收费系统案例。该系统通过面向对象的方法定义了不同类型的车辆及其停车费用计算规则,并利用虚拟函数实现了多态。此外,还提供了一个简单的用户交互界面来演示系统的运行。
6396

被折叠的 条评论
为什么被折叠?



