4. 编写一个求出租车收费的程序。计费方式为3公里内起步价12元,以后每公里收费2.6元。程序中输入起始站、终止站和路程,可以显式收费详情。具体要求: (1) 定义Station类,用于描述路程的起始和站信息,包括以下成员: 保护数据成员:string from //起始站点 string to //终止站点 公有成员函数:构造函数 //提供起始和目标地名函数 void disp() //显示起止站点信息 (2) 定义Mile类,用于描述两地之间的距离,包括以下成员: 保护数据成员:double mile //表示两地之间距离(里程数) 公有成员函数:构造函数 //提供两地之间的距离函数 void disp() //显示里程数 (3) 以Station类和Mile类为基类公有派生Cost类,用于描述打车费用,包括以下成员: 私有数据成员:double price //两地之间打车的总费用 公有成员函数:构造函数 //调用基类构造函数并计算费用 void disp() //显示总费用 (4) 测试:在主函数中创建Cost类的对象("仙林","模范马路",23.8),同时显示完整的信息,包括两地的地名、里程、总费用。
时间: 2023-11-27 20:55:21 浏览: 109
以下是程序的实现:
```
#include <iostream>
#include <string>
using namespace std;
class Station {
protected:
string from;
string to;
public:
Station(string f, string t) {
from = f;
to = t;
}
void disp() {
cout << "起点:" << from << endl;
cout << "终点:" << to << endl;
}
};
class Mile {
protected:
double mile;
public:
Mile(double m) {
mile = m;
}
void disp() {
cout << "里程数:" << mile << "公里" << endl;
}
};
class Cost : public Station, public Mile {
private:
double price;
public:
Cost(string f, string t, double m) : Station(f, t), Mile(m) {
if (mile <= 3) {
price = 12;
}
else {
price = 12 + (mile - 3) * 2.6;
}
}
void disp() {
Station::disp();
Mile::disp();
cout << "总费用:" << price << "元" << endl;
}
};
int main() {
Cost c("仙林", "模范马路", 23.8);
c.disp();
return 0;
}
```
程序中定义了三个类:Station、Mile和Cost。其中,Station类用于描述路程的起始和终止站信息,Mile类用于描述两地之间的距离,Cost类继承自Station和Mile类,用于计算出租车的总费用。
在主函数中,创建了一个Cost类的对象c,并传入起始站、终止站和里程数。最后调用对象的disp函数输出完整的信息,包括起始站、终止站、里程数和总费用。运行程序,输出结果如下:
```
起点:仙林
终点:模范马路
里程数:23.8公里
总费用:65.88元
```
阅读全文