2012-12-04 71 views
0

可能重複:
How do I select a range of values in a switch statement?
c++ cannot appear in a constant-expression|製作一個隨機數罕見的系統,它不工作

我試圖做的是產生一個隨機數,並根據對數的值,寫出來的「通用」,「稀有」,或「非常罕見」。有人能幫助我嗎?

#include <iostream> 
#include <cstdlib> 
#include <ctime> 

using namespace std; 

int main() 
{ 
    int a; 
    srand(time(0)); 
    a = 1 + (rand()%10); 

    switch (a) 
    { 
     case (a >= 0 && a <= 5): 
     cout << "Common"; 
      break; 

     case (a >= 6 && a <= 8): 
     cout << "Rare"; 
      break; 

     case (a >= 9 && a <= 10): 
     cout << "Very rare"; 
      break; 

     default: 
      break; 
    } 

    return 0; 
} 
+1

什麼工作不試試這個?你得到編譯錯誤?分段錯誤?你每次都得到相同的價值嗎?什麼? –

+0

-1,這個問題的標題不描述實際問題,並在一切都沒有提到的編譯器錯誤。 – jogojapan

+0

'情況(一> = 0 &&一個<= 5):' ->如何'了'永遠是0? – brimborium

回答

4

您不能在開關盒中使用比較運算符。如果您想檢查我建議你使用if語句的範圍,以避免使用所有可能的值的列表

switch (a) 
    { 
     case 1: 
     case 2: 
     case 3: 
     case 4: 
     case 5: 
     cout << "Common"; 
      break; 

     case 6: 
     case 7: 
     case 8: 
     cout << "Rare"; 
      break; 

     case 9: 
     case 10: 
     cout << "Very rare"; 
      break; 

     default: 
      break; 
    } 
+0

此外,switch語句以分號結束。 – Raptor

+0

嗯,我是一個Java的傢伙,所以我會相信,但我。不這麼認爲 – billjamesdev

+0

這是一個= 1 +(蘭特()%10);因此,它會增加1,使得可能的範圍是1-10,是的,我想這是錯誤非常感謝你,我不知道我可以做一個以上的情況下,再有那樣的由於相同的輸出:!d – AethariA

2

if (a >= 0 && a <= 5) 
    cout << "Common"; 
else if (a >= 6 && a <= 8) 
    cout << "Rare"; 
else if (a >= 9 && a <= 10) 
    cout << "Very rare"; 
+1

啊是啊,那會也工作了,th anks! – AethariA