2012-11-10 9 views
0

저는 C++의 초보자입니다. do/while 루프 연습을하고 있었고 조건을 인식하는 데 문제가있어서 제대로 루핑되지 않았습니다. 너희들이 내게 이처럼 간단한 문제가 어떻게 해결되는지에 대한 좋은 근거를 줄 수 있니? do/while 루프의 조건을 충족시키기 위해 문자열을 사용하려고합니다.Do/While 루프가 루핑되지 않음

#include <iostream> 
#include <string> 
#include <sstream> 
using namespace std; 

int main() 
{ 
    double mean = 0; 
    string continuer; 
    do 
    { 
     cout << "Do you want to proceed?" << endl; 
     getline (cin, continuer); 
     cout << "something" << endl; 
     cin >> mean; 
    } 
    while (continuer == "Y" || continuer == "y"); 

    return 0; 
} 
+3

달성하고자하는 목표는 무엇입니까? –

+0

더블 라인으로 getline 작업을합니까? – Sasha

+0

@CodingMash 사용자가 숫자를 계속 입력 한 다음 계속할 것인지 묻는 메시지가 표시되는 매우 간단한 do while 루프를 만들고 싶습니다. 사샤 나는 단지 그럴 것이라고 생각한다. – Hayden

답변

1

질문과 의견에서 수집 한 내용은 사용자의 의지에 따라 루프를 반복하려고합니다.

이렇게하려면 char 변수 만 필요합니다.

string input ; 
int number = 0 ; 

do 
{ 
    cout << "Please enter a number" << endl ; 
    cin >> number ; 
    cout << "If you want to continue, Press Y" << endl ; 
    cin >> input ; 

} while (input == "Y" || input == "y") ; 

이 할-동안 조건이 루프 실행의 끝에서 확인됩니다 때문에 루프가 적어도 한 번 실행됩니다. 따라서 사용자가 처음 묻는 메시지가 표시 될 때 Y 키를 누르지 않아도이 루프는 한 번 실행됩니다. 그 후, 조건이 충족되는 한 계속 진행됩니다.

do-while 루프에 대해 자세히 알아보십시오.

http://www.cplusplus.com/doc/tutorial/control/

+0

문자열로 처리하는 방법이 있습니까? – Hayden

+0

위의 코드에서 올바르게 수행 했으므로이를 편집했습니다. –

+0

코드를 실행할 때 계속 하시겠습니까?라는 메시지가 나타납니다. 내가 누르는 것이 무엇이든간에 그것은 루프를 한 번만합니다. – Hayden

0

무엇이 있습니까? 루프 본문은 적어도 한 번 실행해야합니다. 그런 일이 있습니까?

또한 Continuer는 한 문자보다 길 수 있습니다 (예 : "Y \ n"). 그걸 시험 해봐. 여기

내가 할 것 인 것이다 : 당신은 당신이 언어와 작업중인 알고리즘에 충분한 확신 전까지 수

#include <string> 
#include <sstream> 
using namespace std; 



    int main() 
    { 
     double number = 0; 
     string continuer; 
     int loop = 0 
     do 
     { 

      cout << "Do you want to proceed?" << endl; 
      getline (cin, number); 
      cout << "something" << endl; 
      cin>> mean; 
      getline (cin, continuer); 

      cout << "Your answer was '" << continuer << "'." << endl; 
      loop = strcmp("Y", continuer); 
      if (loop != 0) strcmp("y", continuer); 
      if (loop == 0) cout << "Your choice is to stop." << endl; 
      else cout << "Your choice is to continue." << endl; 
     } while (loop == 0); 
     cout << "Bye" << endl; 
     return 0; 
    } 

이 같은 명시해야합니다. 무슨 일이 일어나고 있는지보기가 더 쉬우 며 작동 할 때 'cout'줄을 쉽게 제거 할 수 있습니다.

+0

'루프의 몸체는 적어도 한 번 이상 실행되어야합니다.'라는 말이 무슨 뜻인지 잘 모르겠습니다. 좀 더 자세히 설명해 주시겠습니까? – Hayden

+0

@Hayden, @PapaAtHome이 말하는 것은'do {'와'} 사이의 줄입니다. while은 어떤 경우에도 적어도 한 번 실행됩니다. – jlledom

+0

위의 코드를 테스트 한 결과 '매개 변수 2를'std :: string '에서'const char * '로 변환 할 수 없습니다. – Hayden

관련 문제