2014-10-23 3 views
0

저는 C + +를 사용하여 20 가지 질문 게임을 만들었습니다. 사용자가 1에서 100 사이의 숫자를 생각한 다음 컴퓨터가 추측 할 것입니다. 이 작업을 수행하기 위해 switch 문을 사용하는 방법을 배우려고 노력해 왔습니다. 이것이 내 주 코드에서 도움이 될 것이라고 생각합니다. 그러나 코드에서 불법적 인 중단의 지속적인 오류로 작동하도록 할 수는 없습니다. 나는 코드를 변경하고 온라인으로 답변을 시도했지만 아무 것도 찾을 수 없었습니다.20 질문 Game - Switch Statement

#include <iostream> 

using namespace std; 

int main() 
    { 
    int i; 
    cout << "Enter an integer: "; 
    cin >> i; 
    switch (int i) 
    { 
     case i > 1 : 
     { 
      cout << "int greater than 1, less than 5"; endl; 
      break; 
     } 
     case i > 5 : 
     { 
      cout << "int greater than 5 less than 10"; endl; 
      break; 
     } 
     case i > 10 : 
     { 
      cout << "int greater than 10"; endl; 
      break; 
     } 
    } 
    system("PAUSE"); 
     return 0; 

} 

그리고 표시하는 오류는 다음과 같습니다 : 다음과 같이 내 코드는

error C2043: illegal break 

사람이 이러한 오류가 매우 많이 주시면 감사하겠습니다 보여주는 유지하는 이유에 대답하는 데 도움 수 있다면!

+0

아,해야

cout << "int greater than 1, less than 5"; endl; 

올바르지 않습니다. " 당신은 여러 번 돌아올 것입니다. – japreiss

+0

C++ 언어는'case' 문에 관계형 비교 연산자를 허용하지 않습니다. 'case' 문의 값은 상수 여야합니다. –

+0

과제에 정확히 20 개의 질문이 필요합니까? 사촌은 솔직히 지나치게 잔인합니다. 1-100의 범위에서 프로그램이 숫자를 추측하기 위해서는 약 10 개의 질문 만 필요할 것입니다. –

답변

1

당신은 int 같은 변수 i를 재 선언 안, 당신은 당신이 필요로하는 것 때문에 정말 switch에 대한 좋은 사용 사례 아니라, 또한

switch (i) 

에 전달할 수 :

switch (i) 
{ 
    case 2: 
    case 3: 
    case 4: 
    case 5:  
    { 
     cout << "int greater than 1, less than 5" << endl; 
     break; 
    } 
    case 6: 
    case 7: 
    case 8: 
    case 9: 
    case 10: 
    { 
     cout << "int greater than 5 less than 10" << endl; 
     break; 
    } 
    ///...etc 
} 

당신은 정말 그냥 사용해야 if, else if, else, 같은 :

if (i > 1 && i < 5) 
{ 
    cout << "int greater than 1, less than 5" << endl; 
} 
else if (i >= 5 && i < 10) 
{ 
    cout << "int greater than 5 less than 10" << endl; 
} 
else if (i >= 10) 
{ 
    cout << "int greater than 10" << endl; 
} 
else 
{ 
    cout << "int less than 2" << endl; 
}  

또한 cout 문 그들은 내가 그것을 텐데처럼 switch` 문이 작동하지 않는다 "는 C '의 세계에 오신 것을 환영합니다

cout << "int greater than 1, less than 5" << endl; 
+0

은 'case i> 1'이 유효합니까? – Creris

+1

@Creris : 아니에요. 핵심 상수 표현식 만 허용됩니다. – Deduplicator

+0

이 경우에 할 수있는 한가지는'switch ((n-1)/5)'이고 0, 1, 2에 대한 case 문이 있습니다. [-3,0]에 대한 잘못된 출력을 내기도하지만 – genisage