gv天堂gv无码男同在线,欧美视频你懂的,毛片一级毛片毛片一级一级毛毛片,亚洲黄色视频免费播放,满18岁免费看的尤物视频,日本欧美三级片免费看,亚洲综合伊人影视在线播放

  • 首 頁
  • 采購市場
  • 企業(yè)查詢
  • 營銷建站
  • 營銷推廣
  • 行業(yè)資訊
  • 發(fā)布信息
  • 存包柜C++

    懸賞分:20|
    超市門口的存包柜有n個存包箱,并且有1個投幣開箱控制器,每個逛超市的顧客若要存一下自己的手提包后小件物品時,只要往控制器投入1個1元的硬幣,如果有空的箱子,就會自動打開一個空的箱子,并且自動打印輸出一張小小的密碼紙條;如果箱子沒有空,則提示本柜已滿。當顧客離開超市時,用密碼紙條上指定的數(shù)字密碼依次輸入到開箱控制器,則顧客所存包的箱子門就自動打開,顧客取走物品后,關上門。請編寫開箱控制程序實現(xiàn)上述過程。
    輸入數(shù)據(jù)時,可先輸入存包柜總數(shù)n,再由用戶選擇是“投硬幣”還是“輸密碼”。
    如果“投硬幣”,則只有硬幣值是1才開箱。如果有空柜,則輸出空柜編號及密碼(長度自定);如果無空柜,則提示:“本柜已滿”。
    如果“輸密碼”,如果輸入的密碼與某一柜子密碼相符,則顯示打開的柜子編號,否則輸出提示:“密碼錯誤”。問題補充:
    請寫一下C++程序
    知識庫標簽: 存包柜   |列兵
    #include <iostream>
    using namespace std;
    struct GuiZi//每個存包柜屬性
    {
    long password;//每個柜子密碼
    bool isempty;//是否是空柜子
    };
    class Bag//存包柜
    {
    public:
    Bag();
    ~Bag();
    long PushBag();//存物品
    bool GetBag(long password);//取物品
    private:
    GuiZi* guizi;
    };
    Bag::Bag()
    {
    int n;
    cout<<"請輸入柜子個數(shù):";
    cin>>n;
    guizi = new GuiZi[n];
    int temp = 10000;
    for (int i=0; i<n; i++)
    {
    guizi ->isempty = true;//起初每個柜子為空

    guizi ->password = ++temp;//密碼值設定
    guizi++;
    }
    }
    Bag::~Bag()
    {
    delete guizi;
    }
    bool Bag::GetBag(long password)
    {
    GuiZi* current = guizi;
    while( current)
    {
    if(current ->password == password && current ->isempty != true)//取物品時,需找不為空且密碼符合的柜子
    {
    current ->isempty = 1;//取出物品后該柜子空了
    cout<<"請取出物品!<<endl";
    return true;
    }
    else
    current++;
    }
    cout<<"密碼錯誤!<<endl";//密碼錯誤
    return false;
    }
    long Bag::PushBag()
    {
    GuiZi* current = guizi;
    while(current)
    {
    if(current ->isempty == true )//存物品時,需找空柜子
    {
    cout<<"請放進物品,保存好密碼!<<endl";
    current ->isempty = false;//存放后,該柜子不為空了
    return current ->password;//返回密碼,讓客戶保存
    }
    else
    current++;
    }
    cout<<"存儲柜已滿!"<<endl;//所有柜子都滿了
    return -1;
    }
    int main()
    {
    long password;
    bool flag = 0;//0標示存物品,1標示取物品
    Bag bag;
    while(1)//模擬很多客戶不停存取物品的規(guī)程,故為死循環(huán)
    {
    //……重要的都寫出來了,剩下的自己寫了哈
    }
    return 0;
    }
    為最佳答案評分?
    100% (1)
    不好 0% (0)
    (目前有 1 個人評價)

    其 他 回 答共2條

    1樓

    你的這個程序我?guī)鸵粋€網(wǎng)友改過 你參考一下吧
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    #define N 100
    int mima(void);
    int main(void)
    {
    long bags[N]={0}; //有N個箱子,初始化數(shù)據(jù)
    int i,a,b=0,pass,flag1=0,flag2;//a為命令選擇,b為硬幣,flag1判斷是否有空位,flag2判斷是否密碼重復
    do{
    printf("投硬幣按1\n輸密碼按2\n");
    printf("你的選擇是:");
    scanf("%d",&a);
    if(a==1){
    //存包
    printf("請投硬幣(按1)\n");//投幣
    scanf("%d",&b);
    for(i=0;i<N;i++) //是否有空位
    if(bags[i]==0)
    {
    flag1=1;
    if(b==1){
    do { //密碼是否重復
    flag2=0;
    pass=mima();
    for(int j=0;j<N;j++) //用i來判斷 密碼是否重復 影響了 你是否有空位的循環(huán) 因為 i的值被修改了
    if(bags[j]==pass)
    flag2=1;
    }while(flag2); //while 應該放在外面 與do連成一個do while語句,
    bags[i]=pass;
    printf("第%d號箱子的密碼是%d\n",i+1,pass);
    break;
    }
    }
    if(flag1==0)
    printf("本柜已滿");
    }
    else if(a==2){ //取包
    printf("請輸入你的密碼:");
    scanf("%d",&pass);
    for(i=0;i<N;i++)
    {
    if(bags[i]==pass)
    {
    printf("您的柜子是%d號\n",i+1);
    break;
    } //漏了一個花括號
    }
    if(i>=N)
    printf("密碼錯誤");
    }
    else
    printf("輸入錯誤,請重輸");
    }
    while(1); //這里是不是打錯了 怎么 1==1???
    return 0; //主函數(shù)返回一個 0對應 int main
    }
    int mima()
    {
    int a[6],i;
    srand((unsigned)time(NULL));
    for(i=0;i!=6;++i)
    {
    a[i]=rand()%10;
    }
    return a[0]*100000+a[1]*10000+a[2]*1000+a[3]*100+a[4]*10+a[5];
    }
    知識庫標簽: |列兵

    我來回答這個問題

    立即登陸回答獲取會員積分,提高用戶級別
    友情鏈接:
    Copyright © 商名網(wǎng) All Rights Reserved.