【程序设计与实践】实验三:自动售货机

实验三:自动售货机

题目:

图所示为简易自动售货机,物品架1、2上共有10样商品,按顺序进行编号分别为1~10,标有价格与名称,如下图:
【程序设计与实践】实验三:自动售货机_第1张图片用户购买商品的操作方法如下。
1.售货机物品架上共有10样商品依次编号1-10,标有名称与价格。
2.售货机接受1/2/5/10面值的硬/纸币,用户可以一次性投入多个硬币并选择多种商品,售货机将一次性将商品输出并找零。
3.投入钱币和选择商品皆以-1作为结束,若输入商品编号超出范围或余额不足将自动结束购物,输出购买商品,钱币总额和找零。
输入不需要空格,10请输入’0’,-1请输入’-’

输入输出示例:

输入:
1 1 2 2 5 5 10 10 -1 /钱币序列/
1 2 3 5 1 6 9 10 -1 /商品编号/

输出:
Total:36yuan, change:19 yuan
Table-water1:2
Table-water2:1
Table-water3:1
Milk:1
Beer:1
Oolong-Tea:1
Green-Tea:1

【程序设计与实践】实验三:自动售货机_第2张图片

注释:

主要是熟悉关于switch()函数的相关用法;

下面贴的代码并不是正确解,使用了个十分奇葩的方法(……)请注意看售货机的使用方法(233);

附录(瞎搞的解答):

#include <stdio.h>
#include <iostream>
#include <conio.h>
#include <bits/stdc++.h>
using namespace std;
 
void jiemian(){
	printf("\n");
	printf("\n");
	printf("                     程序设计与实践        实验(三) 自动售货机\n");
	printf("\n");
	printf("      自动售货机使用方法\n");
	printf("     =============================                    \n");
	printf("\n     1.售货机物品架上共有10样商品依次编号1-10,标有名称与价格。\n");
	printf("     2.售货机接受1/2/5/10面值的硬/纸币,用户可以一次性投入多个硬币并选择多种商品,售货机将一次性将商品输出并找零。\n");
	printf("     3.投入钱币和选择商品皆以-1作为结束,若输入商品编号超出范围或余额不足将自动结束购物,输出购买商品,钱币总额和找零。\n"); 
	printf("       (输入不需要空格,10请输入'0',-1请输入'-')\n");
	printf("\n");
	printf("       1---Table-water1   	1 yuan       2---Table-water2   1 yuan\n");
	printf("       3---Table-water3 	1 yuan       4---Coca-Cola  	2 yuan\n");
	printf("       5---Milk   		2 yuan       6---Beer   	3 yuan\n");
	printf("       7---Orange-Juice   	3 yuan       8---Sprite   	3 yuan\n");
	printf("       9---Oolong-Tea   	4 yuan      10---Green-Tea   	4 yuan\n");\
	printf("\n");
}

int main(){
  	char *g[10]={"Table-water1",  "Table-water2",  "Table-water3",  "Coca-Cola", 
"Milk","Beer", "Orange-Juice", "Sprite", "Oolong-Tea", "Green-Tea"};/*定义指针数组,其中每个元素都是
一个字符指针,分别指向各商品名称*/ 
 	int price[10]={1,1,1,2,2,3,3,3,4,4}; /*各商品对应的价格*/ 
 	static int countp[10]; 
 	int change=0,t=0,*p=price,i;
 	char x,y;
  	int a[100],b[100],k;
  	jiemian(); 
  	printf(" Please enter a coin sequence:");
  	while(x!='-'){
  		x=getch();
  		switch(x){
  			case '1':
			  	t+=1;cout<<"1 ";break;
  			case '2':
			 	t+=2;cout<<"2 ";break;
  			case '5':
			  	t+=5;cout<<"5 ";break;
  			case '0':
			  	t+=10;cout<<"10 ";break;
			case '-':
				cout<<"-1";break;
  			default:break;
		}
	}
	cout<<endl<<endl<<" 总计投入金额:"<<t<<" yuan"<<endl;

	cout<<endl;
	change=t;
	printf(" Please enter a goods sequence:");
  	while(y!='-'){
  		y=getch();
  		if(change<*(p+(y-49))){
  			cout<<" 余额不足,结束购物。";
  			break;	
		}
  		switch(y){
  			case '1':
			  	cout<<"1 ";change-=*p;countp[0]++;break;
  			case '2':
			 	cout<<"2 ";change-=*(p+1);countp[1]++;break;
  			case '3':
			  	cout<<"3 ";change-=*(p+2);countp[2]++;break;
  			case '4':
			  	cout<<"4 ";change-=*(p+3);countp[3]++;break;
  			case '5':
			  	cout<<"5 ";change-=*(p+4);countp[4]++;break;
			case '6':
			  	cout<<"6 ";change-=*(p+5);countp[5]++;break;
			case '7':
			  	cout<<"7 ";change-=*(p+6);countp[6]++;break;
			case '8':
			  	cout<<"8 ";change-=*(p+7);countp[7]++;break;
			case '9':
			  	cout<<"9 ";change-=*(p+8);countp[8]++;break;
			case '0':
			  	cout<<"10 ";change-=*(p+9);countp[9]++;break;
			case '-':
				cout<<"-1";break;
  			default:
			  	cout<<" 商品编号超出范围 ";y='-';break;
		}
	}

/*输出总金额,应找回的金额*/ 
  	printf("\n\n Total: %d yuan , change: %d yuan\n",t,change); 
/*输出物品名称与数量*/ 
 	for(i=0;i<10;i++) { 
   		if(countp[i]>0) 
     		printf(" %s : %d \n",g[i],countp[i]);
 	}
 	printf("\n");
  	return 0;
}

你可能感兴趣的:(c++,c++)