2012-12-04 2 views
0
를 작동하지 않습니다

가능한 중복 :
How do I select a range of values in a switch statement?
c++ cannot appear in a constant-expression|난수 희귀 시스템을 만들기 그것은

을 따라 내가 임의의 번호를 생성 할 일은 노력하고있어 숫자의 값에 "Common", "Rare"또는 "Very Rare"라고 쓰십시오. 누군가 나를 도울 수 있습니까?

#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

'case (a> = 0 && a <= 5):' -> 어떻게'a'가 0이 될 수 있습니까? – brimborium

답변

4

스위치 케이스에서는 비교 연산자를 사용할 수 없습니다. 이 시도 :

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

음, 저는 자바 녀석입니다. – billjamesdev

+0

a = 1 + (rand() % 10); 따라서 1을 추가하여 가능한 범위를 1-10로 만든다. 그리고 네, 그 것이 오류라고 생각했습니다. 대단히 감사합니다. , 나는 하나 이상의 케이스가 같은 방식으로 출력되도록 할 수 있는지 몰랐다. 다시 감사 : D – AethariA

2

을 모든 가능한 값의 목록을 사용하지 않는 것이 난 당신이 if 문을 사용하는 것이 좋습니다 범위를 확인하려면 : 무엇을

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

아, 네, 그럴 것입니다. 일해도, 일 anks! – AethariA