1.头文件和命名空间
(1)#include , #include , #include <unordered_map>: 引入了必要的头文件。 (2)using namespace std;: 使用标准命名空间,以简化代码。
2.枚举和结构体 (1)enum class VehicleType: 定义了一个枚举类,包含三种车型:Car、Bus、Truck。 (2)struct Vehicle: 定义了一个结构体,包含车牌号、车型和车重。 映射关系 (3)unordered_map<string, VehicleType> vehicleTypeMap: 使用unordered_map来存储车型字符串和枚举之间的映射关系。 (4)getVehicleType(const string& type): 辅助函数,根据车型字符串返回对应的枚举值。如果映射中不存在该车型,则默认返回Car。
3.费用计算函数 double calculateFee(const Vehicle& vehicle, double mileage): 该函数接受一个Vehicle结构体和一个里程值,然后基于车型和车重计算费用。不同类型的车辆有不同的费率。
4主函数main (1)初始化一个Vehicle结构体变量vehicle。 (2)通过cin从用户那里获取车牌号、车型和车重。 (3)对于车型,使用do-while循环确保用户输入了一个有效的车型(存在于vehicleTypeMap中)。 (4)对于车重,也使用do-while循环,确保用户输入了一个大于0的有效车重。如果输入无效,程序会提示用户重新输入,并清除输入流中的错误状态。获取行驶里程。调用calculateFee函数计算费用,并输出结果。
注意: 代码中使用了cin.clear()来清除输入流中的错误状态,以及cin.ignore()来忽略无效的输入。 当用户输入无效的车型时,程序默认将其视为Car。这可能不是最理想的行为,但在这种情况下,这确保了程序不会崩溃。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。