#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<time.h>
#include<stdlib.h>
int main(){
int n,a[100][100],count=0,code_s[100][4],i,xiangzi[100],book,j,sl,sm;
char request[100];
srand((unsigned)time(NULL));
scanf("%d",&n);
getchar();
for(i=1;i<=n;i++)
xiangzi[i]=0;
M:while(1){
gets(request);
//如果输入exit,结束程序;
if(strcmp(request,"exit")==0){
printf("结束程序\n");
break;
}
//如果输入help;
if(strcmp(request,"help")==0){
printf("显示帮助信息\n");
continue;
}
//如果输入show;
if(strcmp(request,"show")==0){
for(i=1;i<n;i++)
printf("%d",i);
printf("%d\n",n);
for(i=1;i<=n;i++){
if(xiangzi[i]==0)
printf("o");
else printf(".");
}
printf("\n");
continue;
}
//如果输入coin;
if(strcmp(request,"coin")==0){
for(i=1;i<=n;i++)
if(xiangzi[i]==0)
break;
if(i>n){ //如果i>n,则没有一个箱子是空的;
printf("本柜已满\n");
continue;
}
else xiangzi[i]=1; //否则将选中的箱子标记为1,即箱子非空
book=0;
S:while(1){
code_s[i][book]=rand()%10;
book++; //产生4位数密码
if(book==4){
for(sl=1;sl<=n;sl++) //sl标记箱子标号,sm标记每个非空箱子的密码的位的下标
if(xiangzi[sl]==1&&sl!=i){
for(sm=0;sm<4;sm++)
if(code_s[sl][sm]!=code_s[i][sm])
break;
if(sm==4){
book=0;
goto S; //如果随机产生的密码和已经有的密码重复,则重新生成
}
} //到此,产生可行的密码;
break;
}
}
printf("请取密码纸:(%d,",i);
for(book=0;book<4;book++)
printf("%d",code_s[i][book]);
printf(")\n"); //打印密码条;
continue;
}
//输入的是密码;
for(i=1;i<=n;i++){
for(j=0;j<4;j++)
if(request[j]-'0'!=code_s[i][j])
break;
if(j==4){ //j=4说明密码符合
printf("谢谢惠顾,%d号\n",i);
xiangzi[i]=0; //取走东西后箱子标记为空
goto M;
}
}
//如果能到达下面一步,说明以上步骤均不符合;
printf("密码错误\n");
}
return 0;
}