2016-10-11 109 views
-5

我試圖從1到5生成並打印出5個數字,但不是按順序。我正在使用一個自寫功能,'beforeBefore'會檢查數字是否出現過。循環未結束。我如何擺脫循環?

如果該數字之前沒有出現,則函數「出現前」將返回「0」,如果該函數之前出現過,則該函數返回「1」。

目前,即使返回0,do-while循環也不會退出循環。該計劃永遠不會結束。關於我能做什麼的任何建議?編輯 - 降價確實很快。我已經添加了counter ++,但它仍然不起作用。也許有人可以建議內部循環?

while (count < 5) { 

    repeat = 1; 

    do { 
     randomNumber = rand() % 4 + 1; 
     cout << randomNumber; 
     repeat = appearBefore(randomNumber); 
     cout << " " << repeat << endl; 

    } while (repeat == 1); 

    //Add the number into an array of numbers that have appeared before 
    checker[counterForChecker] = randomNumber; 
    counterForChecker++; 

    counter++; 
} 

這是函數appearBefore(變量是全局變量):

int appearBefore(int number) { 

    int x = 0; 
    int match = 0; 

    while (x < counterForChecker+1) { 
     if (checker[x] == number) { 
      match = 1; 
      break; 
     } 
     else { 
      match = 0; 
     } 
     x++; 
    } 

    return match; 
} 
+1

凡'count'遞增? – DumbCoder

+1

在while循環中使用count <5時,位永遠不會在循環內改變它的值。你的意思是使用數字還是別的嗎? –

+2

當你指的是'bool'時,不要使用'int'。 – molbdnilo

回答

4

您檢查count < 5同時增加counterForChecker


設置而條件

while (counterForChecker < 5) 

增加計數器

counter++; // counterForChecker++; 
+0

嗨。我增加了計數器++,但它仍然不起作用。 – kosherjellyfish

0

你想改變變盤點。這現在還沒有完成,所以既然值不變,循環不會結束。

0

循環運行時,count < 5,你永遠不會增加count

您是不是要找使用:

while (counterForChecker < 5) 

如果沒有,添加:

++count; 

在while循環結束

0

使用調試器和單步執行代碼,尋找在變量的值處,如你所做的那樣。你將會學到更多關於一切如何運作的知識。

1

(假設counter++;居然說count++; ...)

如果xk是積極的,x % k0k - 1之間的數字。

因此,您有四種可能的值可供選擇(1,2,3,4),並且您正在循環,直到找到五個唯一值。
這永遠不會結束。

爲了生成從1號到5,使用rand() % 5 + 1;

+0

謝謝,現在這個工作 – kosherjellyfish