Skip to content

14136: 【原4136】继承与多态

题目

题目描述

author: Liu wei 原OJ链接:https://acm.sjtu.edu.cn/OnlineJudge-old/problem/4136

问题描述

  一些快递公司,都提供多样化的服务,同时也收取不同的费用。创建一个表示各种不同包裹的继承层次。以包裹类 Package 作为基类,两日包裹类 TwoDayPackage 和连夜包裹类 OvernightPackage 作为派生类。基类Package包括寄件人姓名、地址、邮政编码、联系电话以及包裹重量(单位:克)和每克费用等数据成员。 Package 类应该提供成员函数 calculateCost ,计算与运输该包裹有关的费用(费用 = 包裹重量 × 每克费用)并返回;添加虚函数display。
  派生类 TwoDayPackage 直接继承基类 Package 的功能,但还应增加一个数据成员,表示付给两日快递服务的平寄费。派生类 TwoDayPackage 还应重新定义基类的成员函数 calculateCost 来计算运输费用,具体方法是将平寄费加到由基类 Package 的 calculateCost 函数计算得到的费用中。 添加成员函数display。   派生类 OvernightPackage 直接继承基类 Package 的功能,但还应增加一个数据成员,表示付给连夜快递服务的每克的额外费用。派生类 OvernightPackage 还应重新定义基类的成员函数 calculateCost ,从而使它在计算运输费用之前,先将额外的每克费用加到标准的每克费用上。添加成员函数display。

输入输出描述

输入

  • 第1行:正整数n,表示快递数量。
  • 第2行到第n+1行:name address postalcode telephone weight cost type bonus,分别表示寄件人姓名,地址,邮编,电话,重量,每克费用,快递方式,额外费用。其中name(<=20),address(<=50),postalcode(<=6),telephone(<=13)为字符串,weight,cost,bonus为浮点型,type为整型,1表示两日包裹,此时bonus为平寄费;2表示连夜包裹,此时bonus为额外的每克费用。

输出

  • name address postalcode telephone way expenses,其中way为TwoDayPackage或OvernightPackage,expenses为实际费用,保留一位小数。

程序运行示例

Sample Input

2
Lucy sjtu 200240 17700000000 8.35 2.4 1 8
Michael sjtu 200240 13312345678 12.33 3.0 2 1.2

Sample Output

Lucy sjtu 200240 17700000000 TwoDayPackage 28.0
Michael sjtu 200240 13312345678 OvernightPackage 51.8

注意

  • 按照《组合与继承》这一章节内容作答。

Oops! 本题目还没有解答!

助教老师们编题的速度,已经超过了解题的速度!

OJ翻了一新,但本解答集还大多用的是2017-2019级,甚至更早的同学们贡献的答案。

如果你已经AC了,可以的话,请您参考添加页面,与大家一起分享你的题解!