查看: 3348|回復: 27
打印 上一主題 下一主題

[提問] c++亂數問題

  [複製鏈接]
  • TA的每日心情
    哭哭
    2015-1-6 14:23
  • 簽到天數: 18 天

    [LV.4]偶爾看看III

    7

    主題

    92

    帖子

    152

    積分

    高一新生

    Rank: 2

    積分
    152

    程式設計達人 - 2014新手達陣台南一中資訊社

    樓主
    發表於 2014-8-27 15:17:56 | 顯示全部樓層
    本帖最後由 domen111 於 2014-8-27 21:45 編輯

    [C++] 純文本查看 復制代碼
    #include<iostream>
    #include<cstdlib>
    #include<ctime>
    using namespace std;
    int main()
    {
            srand(time(NULL));
            bool log=true,idiot=false;
            int a=0,d=0,e=0,num=0;
            char b[4],c[5];
            while(a<4)
            {
                    b[a]=rand()%10+'0';
                    for(int q=0;q<a;q++)
                    {
                            if(b[a]==b[q])
                                    log=false;
                    }
                    if(log)
                            a++;
                    log=true;
            }
            //cout<<b<<endl;
            while(cin>>c)
            {
                    num++;
                                    if(num>20)
                              break;
                    for(int q=1;q<4;q++)
                    {
                            for(int w=0;w<q;w++)
                            {
                                    if(c[q]==c[w])
                                    {
                                            idiot=1;
                                            break;
                                    }
                            }
                            if(idiot)
                                    break;
                    }
                    if(idiot)
                    {
                            idiot=0;
                            cout<<"You idiot"<<endl;
                            continue;
                    }
                    if((c[1]=='\0')||(c[2]=='\0')||(c[3]=='\0')||(c[4]!='\0'))
                    {
                            cout<<"You idiot"<<endl;
                            continue;
                    }
                    for(int q=0;q<4;q++)
                    {
                            for(int w=0;w<4;w++)
                            {
                                    if(b[q]==c[w])
                                            if(q==w)
                                                    d++;
                                            else
                                                    e++;
                            }
                    }
                    if(d==4)
                    {
                            cout<<"You win"<<endl;
                            break;
                    }
                    cout<<d<<" A "<<e<<" B"<<endl;
                    d=0;
                    e=0;
            }
            return 0;
    }





    題目: 1A2B
    可憐的喬韋小廢物正在玩1A2B的遊戲,然而笨笨的他已經連輸二十次了。你可以設計一個程式幫助喬韋贏得遊戲嗎?
    遊戲規則: 電腦會產生四個不重複的數字,而你要猜出這四個數字。每次輸出四個數字,電腦會回傳 幾A幾B (ex: 1A2B)。A 代表數字對且位置不對,而B代表數字對但位置不對。
    輸出說明:
    四個數字。
    注意: 若輸出不到四個或超過四個數字,或是輸出的數字重複,電腦將不會輸入。
    另外: 為了避免各位從最小的 0123 一直輸出到最大的 9876,共5040次。因此為了減輕各位的負擔,同時顯示各位的智商高於喬韋小廢物,輸出次數不得超過 20次。
    輸入說明:
    一個數字,字元’A’, 一個數字,字元’B’,皆以空格隔開。
    範例輸出:
    6548
    範例輸入:
    2 A 2 B   (答案: 6845)

    點評

    你在說Brad?  發表於 2014-9-2 13:02
    請各位包容一下精神病患  發表於 2014-8-28 00:57
    這到底是一個小遊戲,還是程式競賽的題目? 你這種格式的寫法我還以為是程式競賽的題目,後來發現感覺像是小遊戲  發表於 2014-8-27 21:54
    請使用程式碼標籤  發表於 2014-8-27 21:46
    come on boy  發表於 2014-8-27 15:27
    回復 支持 0 反對 1

    使用道具 檢舉

    您需要登錄後才可以回帖 登入 | 加入我們

    本版積分規則

    快速回覆 返回頂部 返回列表