7-6 自动售货机 (30分)

如图所示的简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1-10,标有价格与名称,一个编号对应一个可操作按钮,供选择商品使用。如果物架上的商品被用户买走,储物柜中会自动取出商品送到物架上,保证物品架上一定会有商品。用户可以一次投入较多钱币,并可以选择多样商品,售货机可以一次性将商品输出并找零钱。

用户购买商品的操作方法是:

(1)从“钱币入口”放入钱币,依次放入多个硬币或纸币。钱币可支持1元(纸币、硬币)、2元(纸币)、5元(纸币)、10元(纸币),放入钱币时,控制器会先对钱币进行检验识别出币值,并统计币值总额,显示在控制器显示屏中,提示用户确认钱币放入完毕;

(2)用户确认钱币放入完毕,便可选择商品,只要用手指按对应商品外面的编号按钮即可。每选中一样商品,售货机控制器会判断钱币是否足够购买,如果钱币足够,自动根据编号将物品进行计数和计算所需钱币值,并提示余额。如果钱币不足,控制器则提示“Insufficient money”。用户可以取消购买,将会把所有放入钱币退回给用户。

输入格式:

先输入钱币值序列,以-1作为结束,再依次输入多个购买商品编号,以-1结束。

输出格式:

输出钱币总额与找回零钱,以及所购买商品名称及数量。

输入样例:

1 1 2 2 5 5 10 10 -1
1 2 3 5 1 6 9 10 -1
 1 #include<iostream>
 2 #include<string>
 3 #include<vector>
 4 using namespace std;
 5 int main()
 6 {
 7     vector<int>money;
 8     int Bank_money[11] = {0,1,1,1,2,2,3,3,3,4,4}, money_total = 0, money_change = 0;
 9     int Bank_need[11] = { 0 }, flag=1;
10     int tmp;
11     while (1)
12     {
13         cin >> tmp;
14         if (tmp == -1)
15             break;
16         money.push_back(tmp);
17         money_total+= tmp;
18     }
19     money_change = money_total;
20     while (1)
21     {
22         cin >> tmp;
23         if (tmp == -1)
24             break;
25         Bank_need[tmp]++;
26         money_change -= Bank_money[tmp];
27
28     }
29     if (money_change>0)
30     printf("Total:%dyuan,change:%dyuan\n", money_total, money_change);
31     else
32     {
33         printf("Insufficient money");
34         flag = 0;
35     }
36     for (int i = 1; i < 11; i++)
37     {
38         if (Bank_need[i] != 0&&flag!=0)
39         {
40             switch (i)
41             {
42             case 1:printf("Table-water:%d;", Bank_need[i]);
43                 break;
44             case 2:printf("Table-water:%d;", Bank_need[i]);
45                 break;
46             case 3:printf("Table-water:%d;", Bank_need[i]);
47                 break;
48             case 4:printf("Coca-Cola:%d;", Bank_need[i]);
49                 break;
50             case 5:printf("Milk:%d;", Bank_need[i]);
51                 break;
52             case 6:printf("Beer:%d;", Bank_need[i]);
53                 break;
54             case 7:printf("Orange-Juice:%d;", Bank_need[i]);
55                 break;
56             case 8:printf("Sprite:%d;", Bank_need[i]);
57                 break;
58             case 9:printf("Oolong-Tea:%d;", Bank_need[i]);
59                 break;
60             case 10:printf("Green-Tea:%d;", Bank_need[i]);
61                 break;
62             }
63         }
64     }
65 }

输出样例:

Total:36yuan,change:19yuan
Table-water:2;Table-water:1;Table-water:1;Milk:1;Beer:1;Oolong-Tea:1;Green-Tea:1;

原文地址:https://www.cnblogs.com/luoyoooo/p/12215789.html

时间: 2024-10-15 17:47:10

7-6 自动售货机 (30分)的相关文章

设计模式 状态模式 以自动售货机为例

转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/26350617 状态模式给了我眼前一亮的感觉啊,值得学习~ 先看定义:允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类.定义又开始模糊了,理一下,当对象的内部状态改变时,它的行为跟随状态的改变而改变了,看起来好像重新初始化了一个类似的. 下面使用个例子来说明状态模式的用法,现在有个自动售货机的代码需要我们来写,状态图如下: 分析一个这个状态图: a.包含4个状态(

查询自动售货机中的商品价格

问题描述:假设自动售货机出售四种商品,在屏幕上显示以下菜单(编号和选项),用户可以连续查询商品的价格,当查询次数超过5次时,自动退出查询:不到5次时,用户可以选择退出.当用户输入编号1~4,显示相应的商品价格(保留1位小数):输入0,退出查询:输入其他编号,显示价格为0. int choice,i; double price; for(i=1;i<=5;i++){ //以下5行显示菜单 printf("[1]Select crisps\n"); //查询薯片价格 printf(&

ios开发之自动售货机的设计与实现

// // main.m // 自动售货机 // /* 自动售货机系统是一个无人售货系统.售货时,顾客把钱投入机器的投币口中, 1.机器检查纸币或者硬币的特点,有效的硬币是一元,五角,有效纸币是十元,五元,其它货币都认为是假币,将其从退币口退出. 2.当机器接到有效的硬币后,把货币放入到储藏箱中,顾客支付的货币根据货币的面值进行累加. 3.自动货机装有物品分配器,每个物品分配器,包含了零个或多个价格相同的物品,顾客通过选择物品分配器来选择商品,如果物品分配其中有商品,而顾客支付的货币部大于该商品

使用NewLife网络库构建可靠的自动售货机Socket服务端(一)

最近有个基于tcp socket 协议和设备交互需求,想到了新生命团队的各种组件,所以决定用NewLife网络库作为服务端来完成一系列的信息交互. 第一,首先说一下我们需要实现的功能需求吧 1,首先客户有一堆自动售货机的设备,设备连接socket服务端后 定时发送设备实时状态作为心跳信息,并且服务端需要下发信息予以确认. 2,需要知道设备的实时在线状态 3,设备需要实现微信,支付宝扫码支付需求,当客户买东西的时候选择扫码支付时,设备上报产品价格信息,支付方式,服务器下发微信或者支付宝的当面付二维

自动售货机是怎么赚钱的

自动售货是算是一种全新的新零售业态,它有投资小,回报快,管理模式简单等特点.从自动售货机进入中国市场发展以来,它的便捷性有效的提升了人们生活的质量.但是,从初期的各方压力与技术需求没有达到市场所需,所以国内的自动售货机一直不温不火. 随着时间推移.国内经济的发展,人工成本,店铺租金的增长,许多地区的商业配套设施无法再满足人们的需求时,更多的人开始追求即时随性,便捷性的消费方式.再加上互联网的覆盖,移动式支付技术提升之下,迅速的引领中国的零售市场.24小时营业服务,低成本,智能化等优势打开了无人零

基于迅为4418开发板|触控一体机在自动售货机的应用

近几年,随着移动支付在我国发展的越来越迅速,越来越多的无人商店,无人售卖机越来越多,对移动终端的要求也越来越高,如何降低这些设备的开发门槛,让越来越多的人在日常生活中可以更多的接触到这类产品,因此对终端的性能和降低开发门槛提出了更高的要求. 1.自动售货机(Vending Machine,VEM)是能根据投入的钱币自动付货的机器.自动售货机是商业自动化的常用设备,它不受时间.地点的限制,能节省人力.方便交易.是一种全新的商业零售形式,又被称为24小时营业的微型超市. 2.自动售货系统概念及系统原

C#骏鹏自动售货机接口

MachineJP类: 第1部分:串口初始化,串口数据读写 using System; using System.Collections.Generic; using System.IO.Ports; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using MachineJPDll.Models; us

菜鸟贴;在DE1-S0C上实现了一个FPGA的自动售货机

存在问题:1,代码很丑!!!2,功能简单 遇到的问题:1,逻辑问题,在一个售货机中也会体现的十分突出.FPGA逻辑和时序是必须关心切着重关心的!! 2,按键和开关存在抖动!但不是逻辑混乱的源头!混乱的源头是逻辑的混乱,过程中出现了无数次逻辑的恼人混乱,其实回想起来大多是由于编写代码是没有很好的考虑时钟和逻辑关系,状态机设计不够熟练,各个状态间的传递关系不清晰! 3,没有经验和做事缺少专注和逻辑:1)对设计过程不应该一口气写到地,应该每写一条代码就清楚它会出现什么现象,没写一个分支就应该考虑清楚它

【华为云技术分享】基于小熊派STM32芯片的通过MQTT上报JSON数据到华为物联网平台的自动售货机Demo解析

[摘要] STM32的工程在文章末尾,可自行下载. 一.工程配置 1.MCU类型选择STM32L431RC 2.烧录器选择OpenOCD,参数 -f interface/stlink-v2-1.cfg -f target/stm32l4x.cfg 3.输出目录选择 LiteOS_Lab_STM32\targets\STM32L431_BearPi\GCC\appbuild 4.编译器Makefile选择 targets\STM32L431_BearPi\GCC\Makefile 5.平台参数配置