線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1720
推到 Plurk!
推到 Facebook!

c++猜數字~輸入1234都說請輸0-9,還有如何取亂數

尚未結案
017161
一般會員


發表:4
回覆:9
積分:2
註冊:2004-12-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-21 21:31:23 IP:61.229.xxx.xxx 未訂閱
問題是我如果個別分開的話,測試是可以用 但是用do while把0-9和重覆放在一起 輸入1234的話,會說請輸入0-9 能夠依我的程式,能夠給我用x[]取亂數的指導和每次產生亂數都不同指導 希望各位大大,能給我提示和指導!
    #include 
#include 
#include 
#define DIGITS 4     bool check_nondigit(char y[])
{
int i;
bool a = false;
for(i=0;i9)
          a = true;
  if(a == true)
        {
           cout << "請輸入0-9的數字" << endl;
       break;
        }
  
}
return a;
}    bool check_repeatdigit(char y[])
{
int i;
bool b = false;
for (i=0;i> y;  //  任何長度字串均可 
        }while(check_repeatdigit(y));
    cout << "請輸入0-9的數字" << endl;
}while(check_nondigit(y));
}    
李國維
高階會員


發表:42
回覆:287
積分:235
註冊:2003-02-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-21 21:42:54 IP:218.167.xxx.xxx 未訂閱
017161
一般會員


發表:4
回覆:9
積分:2
註冊:2004-12-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-21 21:55:03 IP:61.229.xxx.xxx 未訂閱
謝謝大大,我等等會把它搞懂的! 但是我下面的程式碼,我輸入1234,卻是輸出:請輸入0-9的數字! 我下面的程式碼是那裡有錯,可以告訴我嗎?
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-12-21 22:33:30 IP:211.76.xxx.xxx 未訂閱
017161你好:    當你輸入"1234"後, check_repeatdigit都會傳回false    因此下面的碼當然就是輸出"請輸入0-9的數字"  
 
do{
        do{
         cin >> y;  //  輸入"1234" 
        }while(check_repeatdigit(y)); 
         // check_repeatdigit回傳false,因此while loop結束
    cout << "請輸入0-9的數字" << endl;  // 接下來就輸出
}while(check_nondigit(y)); // 回傳false;while loop結束
}
017161
一般會員


發表:4
回覆:9
積分:2
註冊:2004-12-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-12-21 23:00:33 IP:61.229.xxx.xxx 未訂閱
版主: 我不知是不是我愚笨,把那段用不見之後,還是一樣的說! do{ do{ cin >> y; // 輸入"1234" }while(check_repeatdigit(y)); // check_repeatdigit回傳false,因此while loop結束 }while(check_nondigit(y)); // 回傳false;while loop結束 }
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-12-22 09:22:56 IP:61.66.xxx.xxx 未訂閱
if(y[i]<0||y[i]>9) a = true; 改成 if(y[i]<'0'||y[i]>'9') a = true; 你輸入的"1234" 實際上存為 y[0] = 0x31, y[1] = 0x32, y[2] = 0x33, y[3] = 0x34 '1' '2' '3' '4 所以y[i]一定會大於9 a一定為True
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-12-22 09:30:07 IP:61.66.xxx.xxx 未訂閱
引言: if(y[i]==y[i-1]||y[i]==y[i-2]||y[i]==y[i-3]||y[i]==y[i-4]||y[i]==y[i-5]||y[i]==y[i-6] ||y[i]==y[i-7]||y[i]==y[i-8]||y[i]==y[i-9])
你的y[]只有四個元素,怎麼可能會有這麼多條件??(例[i-9]??) 用下面的方式比較有彈性
 
bool check_repeatdigit(char y[])
{
    int i,j;
    for (i=0;i<(DIGITS-1);i  )
    {
        for ( j = i 1; j < DIGITS; j   )
        {
            if ( y[i] == y[j] )
            {
                    cout << "有重覆的數字喔!" << endl;
                return true;
            }
        }
    }
    return false;
}
017161
一般會員


發表:4
回覆:9
積分:2
註冊:2004-12-19

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-12-22 19:12:13 IP:61.229.xxx.xxx 未訂閱
#define DIGITS 4 因為我們老師說把4改成5,就可以輸入五位數! 所以,我才一直減到9! 不過,謝謝你的改寫! 我把分數用給你!
系統時間:2024-05-19 12:28:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!