华为2017校招题:自动售货系统

描述:考生需要模拟实现一个简单的自动售货系统,实现投币、购买商品、退币、输出库存商品及存钱盒信息的功能.
1. 系统中存在以下商品与钱币:
三种商品:每种商品包含商品名称、单价、数量三种属性,分别为:名称为A1的商品单价为2元数量为5件;名称为A2的商品单价为3元数量为10件;名称为A3的商品单价为4元数量为14件
存钱盒信息存在以下三种面额1、2、5元的钱币,每种钱币包括面额、张数属性,分别为:1元的 5张;2元的 5张, 5元的 3张;
2. 系统退币原则:根据系统存钱盒内钱币的信息,按钱币总张数最少的原则进行退币,即使用户只投币不购买商品也按此原则退币。
3. 约束:考生不需要考虑命令的非法性,即不存在非法的命令的情况,例如系统中A1商品只有5件,不存在买第6件的情况,不存在买的商品总价超过投币总和的等情况。
4. 输入说明
系统接收到输入命令需要初始化系统,初始化系统中商品与钱币数量。命令字与参数间使用一个空格分隔,不同命令之间用逗号分隔。
1). 投币命令:命令格式:p 钱币面额,投币可以投入多次,只能投入1、2、5元面额的钱币。
2). 购买商品:命令格式:b 商品名称
一条购买命令仅能购买一件商品,可以多次购买;购买商品成功后,自动售货机中对应商品数量减1,存钱盒中金额相应的增加,全部购买完成需要按退币原则把多余的钱币退回。
例如:p 5,p 5,p 5,b A3,b A3,b A2
5. 输出说明
输出自动售货机中商品和存钱盒的信息,包含商品名称、数量,存钱盒面额、数量。根据商品名称的从小到大顺序进行排序,输出结果中商品名称与数量使用一个空格分开,
存钱盒根据钱币面额从小到大排序输出,钱币面额与数量使用一个空格分开,不同信息间使用逗号分开,商品信息与存钱盒信息使用分号分开。
例如,返回结果为:A1 5,A2 9,A3 12;1 5,2 3,5 6
运行时间限制:
无限制
内存限制:
无限制
输入:

投币命令、购买商品命令
输出:

自动售货机中商品和存钱盒的信息
样例输入:

p 5,p 5,p 5,b A3,b A3,b A2
样例输出:

A1 5,A2 9,A3 12;1 5,2 3,5 6
答案提示:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值