2017-09-05 3 views
-2

사용자에게 회신 및 회신 인쇄를 원하는 횟수를 물어 보는 프로그램을 만듭니다. 나는 프로그램에서 while 루프와 switch case를 사용했다. 그러나 std::cin의 도움으로 변수 a에 입력을 저장할 때 동일한 입력이 스위치 케이스에 수신되지 않습니다. 어떤 도움을 주셔서 감사합니다.스위치 케이스에서 cin 입력이 작동하지 않습니다.

#include <iostream> 

using namespace std; 

int a; 
int input; 
int i=1; 
void display() 
{ 
    cout << "Select a choice for reply" << endl; 
    cout << "1.Thank You" << endl; 
    cout << "2.Welcome" << endl; 
    cout << "3.Okay" << endl; 
} 

int main() 
{ 
    display(); 
    cout << "Enter Choice" << endl; 
    cin >> a; 
    input='a'; 
    switch (input) 
    { 
     case '1': { 
      int x; 
      cout << "Enter no. of times you want to print reply line" << endl; 
      cin >> x; 
      while (i <= x) 
      { 
       cout << "Thank you" << endl; 
      } 

      break; 
     } 
     case '2': { 
      int x; 
      cout << "Enter no. of times you want to print line" << endl; 
      cin >> x; 
      while (i <= x) 
      { 
       cout << "Welcome" << endl; 
      } 

      break; 
     } 
     case '3': { 
      int x; 
      cout << "Enter no. of times you want to print line" << endl; 
      cin >> x; 
      while (i <= x) 
      { 
       cout << "okay" << endl; 
      } 

      break; 
     } 
     default: { 
      cout << "wrong choice" << endl; 
     } 

     cout << "Thank you for replying" << endl; 
    } 

    return 0; 
} 
+1

'case '1'' - 음. 당신을 위해 일할 작은 기회. 나는 'case 1'을 시도하지 않았다고 가정합니다 (즉, 문자 리터럴을 사용하지 마십시오). 그리고 이후 'while'루프에서는'i'도'x'도 변경되지 않으므로 첫 번째 문제를 해결하더라도 무한대로 회전 할 운명입니다. 나는 강력하게 C++에 대한 좋은 책을 제안한다. (https : // stackoverflow.co.kr/questions/388242/the-definitive-c-book-guide-and-list)를 참조하십시오. – WhozCraig

+0

C++ 교과서의 샘플처럼 코드의 형식을 올바르게 지정하십시오. –

+0

'input'을'integer'로 선언하고'input = 'a''라고 지정했습니다. 그 후에 당신은'switch (input)'을 넣는다. – kiLLua

답변

3

핵심 문제는 다음과 같습니다

input = 'a' 

그리고 :

case '1': 

당신이 아마 원하는 것은 :

input = a 

case 1: 

모든 컴파일러는 경고를 던져해야 한 . 하지만 결국 값을 복사해야하는 이유는 무엇입니까? 그냥 코드에 많은 문제가, 사실

switch(a) 

을,하지만 난 다른 사람이 정교한 드리겠습니다. 귀하의 문제가 input='a';입니다

+0

감사합니다. 코딩을 시작했습니다. –

0

, 입력 값이 97이 될 것입니다, 그것은 당신이 input = (int)'a';

왜 선언하는 'A'변수를 작성하는 경우 동일? 그냥 입력 사용 cin >> input;

0
#include <iostream> 
using namespace std; 
int a; 
int input; 
int i=1; 
void display() 
{ 
    cout<<"Select a choice for reply"<<endl; 
    cout<<"1.Thank You"<<endl; 
    cout<<"2.Welcome"<<endl; 
    cout<<"3.Okay"<<endl; 
} 

int main() 
{ 
    display(); 
    cout<<"Enter Choice"<<endl; 
    cin>>a; 
    input=a; 
    switch(input) 
    { 
     case 1 : 
     { 
      int x; 
      cout<<"Enter no. of times you want to print reply 
      line<<endl; 
      cin>>x; 
      while(i<=x) 
      { 
       cout<<"Thank you"<<endl; 
       x--; 
      } 
      break; 
     } 
     case 2 : 
     { 
      int x; 
      cout<<"Enter no. of times you want to print line" <<endl; 
      cin>>x; 
      while(i<=x) 
      { 
       cout<<"Welcome"<<endl; 
       x--; 
      } 
      break; 
     } 
     case 3 : 
     { 
      int x; 
      cout<<"Enter no. of times you want to print line"<<endl; 
      cin>>x; 
      while(i<=x) 
      { 
       cout<<"okay"<<endl; 
       x--; 
      } 
      break; 
     } 
     default: 
     { 
      cout<<"wrong choice"<<endl; 
     } 
     cout<<"Thank you for replying"<<endl; 
    } 
    return 0; 
} 
+0

문제는 입력 = 'a'; 입력 값은 97이 될 것이고, 입력 = (int) 'a'라고 쓰면 동일합니다. a와 input 인 두 개의 다른 변수를 취하는 것만으로도 충분합니다.하지만이 두 변수를 선언하고 사용했기 때문에 나는 그것을 프로그램에서 제거하지 않았습니다. 사례를 작성할 때. in 스위치를 사용하면 integer에 대한 구문을 항상 기억합니다. (case 1 :) 여기서 1은 문자 (case 'a':)에 대한 선택 및 구문으로 제공하는 숫자로 대체 될 수 있습니다. 또한 while 루프에서 종료 조건을 제공하는 것을 잊었습니다 엑스--;). –

0

당신은 당신의 코드에서 몇 가지 문제가 있습니다 input = 'a';
잘 직접 변수를 사용해야합니다 그것을 할 : 당신은 정수에게 문자 제공하려고
1)없이 (input = a;를 ')

2) 스위치 케이스에서 '1', '2'(char 유형)과 비교하지만 input은 정수 유형입니다. 이것을 시도하십시오 :
case 1:case 2: (없이 ')

3) 당신은 증가 또는 감소 i 또는 x 귀하의 while 루프에서, 그들은 결코 멈추지 않을거야. 루프 내 어딘가에 i++ 또는 x--과 같은 것을 시도해보십시오.

일부 발언 : 당신은 중괄호없이 스위치 케이스를 사용할 수 있습니다
1) ({}) :

int a = 0; 
cin >> 1; 
switch(a) 
{ 
    case 1: 
     break; 
    case 2: 
     int tmp = 0; 
     cout<<"tmp: "<<tmp<<endl; 
     break; 
    default: 
     break; 
} 

2) 전역 변수를 피하십시오, 그들은 대부분의 경우 필요하지 않습니다 나쁜 관행이다.

cout << "Enter Choice" << endl; 
cin >> input; 
switch (input) 

4) 마지막으로 당신이 좋은 C++ 책을 읽도록 권장하지 적어도, 그것은 정말 가치가있다 :

3) 당신은 당신의 변수 a를 필요 없어요, 당신처럼, 직접 input를 사용할 수 있습니다. (Good books)

관련 문제