2016-10-16 3 views
-1

그래서 1에서 5까지의 숫자 값만 받아 들일 수있는이 프로그램을 만들고 있는데, switch 문만 사용하여 해당 숫자 값을 각각의 로마 숫자로 변환해야합니다. 나는 작은 따옴표가 문자를위한 것임을 확신하므로 숫자 주위에 큰 따옴표로 이미 시도한 것처럼 int의 경우 문제가 있습니다. iostream을 포함시키고 int = num을 갖도록했습니다.int 스위치 문제 문제

#include <iostream> //preprocessor directives are included 

using namespace std; 

int main() { 
    int num = 0; 

    cout << "Enter a number from 1 to 5: " << endl; 
    cin >> num; 
    switch (num) { 
    case "1" : 
     cout << "I" << endl; 
     break; 
    case "2" : 
     cout << "II" << endl; 
     break; 
    case "3" : 
     cout << "III" << endl; 
     break; 
    case "4" : 
     cout << "IV" << endl; 
     break; 
    case "5" : 
     cout << "V" << endl; 
     break; 
    } 

} 
+0

귀하의 코드 주위의 숫자는 나를 위해 잘 작동합니다 ... 당신이 저에게 잘못이 무엇인지 말해 줄 수 있습니까? 컴파일러 출력? –

+0

"case 레이블이 정수 상수로 축소되지 않습니다"오류로 인해이 시점에서 실행할 수 없습니다. 내 컴파일러를 다시 시작하겠습니다. – Can

+0

괜찮 았어. 그것이 당신을 위해 일했다는 것을 알려 주셔서 고마워요, 그렇지 않으면 나는 그것을 발견하지 못했을 것입니다. – Can

답변

4

int이 아닌 문자열 값과 비교할 수 있습니다. 각 case 문에서 따옴표를 삭제하십시오.

+0

케이스 라벨이 정수 상수로 축소되지 않는다는 오류가 계속 발생합니다. 나는 또한 따옴표를 떨어 뜨렸다. – Can

+0

해당 코드를 게시하십시오. –

+0

#include using namespace std; int main() { \t \t int num = 0; \t \t cout << "1에서 5까지의 숫자를 입력하십시오."<< endl; \t \t cin >> num; \t \t 스위치 (NUM) { \t \t 사례 1 : \t \t \t COUT << "I"<< ENDL; \t \t \t 중단; \t \t 케이스 2 : \t \t \tcout << "II"<< endl; \t \t \t 중단; \t \t 경우 3 : \t \t \tcout << "III"<< endl; \t \t \t 중단; \t \t 케이스 4 : \t \t \tcout << "IV"<< endl; \t \t \t 중단; \t \t 케이스 5 : \t \t \tcout << "V"<< endl; \t \t \t 중단; \t \t} \t은} – Can

0

변수의 유형이 무엇이든간에 문자 또는 문자열 또는 기타를 입력 할 수 있습니다! 정수로 문자열을 입력하면 알 수없는 동작 또는 무한 루프가 발생합니다.

미안 당신이 1에서 5

에 숫자 만 또는 숫자를 원하는 CIN을 알 수있는 방법이없는 솔루션입니다 :

사용 예외 처리 : qutes없이

#include <iostream> 

int main() 
{ 
    int num = 0; 
    std::cin.exceptions(); 

    try{ 
      std::cout << "Enter a number from 1 to 5: " << std::endl; 
      std::cin >> num; 
      if(std::cin.fail()) 
       throw "Bad input!"; 
      if(num > 5 || num < 1) 
       throw "only numbers 1 throug 5 are allowed!"; 
    } 
    catch(char* cp) 
    { 
     std::cout << cp << std::endl; 
    } 
    catch(...) 
    { 
     std::cout << "An error occuered sorry for the inconvenience!" << std::endl; 
    } 

    switch (num) 
    { 
     case 1 : 
      std::cout << "I" << std::endl; 
     break; 
     case 2 : 
      std::cout << "II" << std::endl; 
     break; 
     case 3 : 
      std::cout << "III" << std::endl; 
     break; 
     case 4 : 
      std::cout << "IV" << std::endl; 
     break; 
     case 5 : 
      std::cout << "V" << std::endl; 
     break; 
     //default: 
     // std::cout "Bad input! only numbers 1 through 5" << std::endl; 
    } 

    return 0; 
}