2017-09-22 8 views
0

안녕하세요 저는 C++을 배우려고 노력 중이며 프로그램을 통해 약간의 연습을하고 싶습니다. 그러나 루프 내에서 cout을 사용하는 데 문제가 있습니다.루프가 다시 실행될 때 "다시 시도하십시오"라는 메시지가 표시되지 않는 이유는 무엇입니까?

텍스트를 출력하려고하는 루프입니다. 사용자가 유효하지 않은 번호를 입력하면 "다시 시도하십시오!"라고 말하게됩니다.

while (datecheck) 
{ 
    bool check(false); 
    if (check) 
     std::cout<<"Sorry try again!"<<std::endl; 
    std::cin>>c; 
    if (c >= 1) 
    { 
     if (b == 2 && c <= 28) 
      datecheck = false; 
     if (b == 2 && a % 4 == 0 && c <= 29) 
      datecheck = false; 
     if (b == 4 || b == 6 || b == 9 || b == 11 && c <= 30) 
      datecheck = false; 
     if (c <= 31) 
      datecheck = false; 
    } 
    check = true; 
} 

가 출력하고, 내가 의도적으로 루프에서 자신을 유지할 때 당신은 모든 반복에 신선한 새로운 변수 check를 선언

Year: -20 
-20 
-20 
+3

로컬 변수의 초기화를 통해 루프 내에서 플래그를 false로 설정합니다. 그런 다음 사실이라면 출력합니다. 언제 출력물을 기대합니까? – Yunnosch

+0

while bool check (false); 행을 이동시킵니다. 'check = true; '는 else 조건의 일부 여야합니다. – MKR

+0

잠깐 내가 바보 야. 루프를 다시 시작하고 플래그를 false로 선언 할 때를 추측합니다. 내 잘못이야. 고마워. – amgtree

답변

0

아무것도 출력하지를 않습니다. 그리고 매번 변수를 false으로 초기화합니다. 따라서 while 루프 전에 선언을 이동하십시오.

변경이이에

while (datecheck) 
{ 
    bool check(false); 
    ... 
    check = true; 
} 

는 :

bool check(false); 
while (datecheck) 
{ 
    ... 
    check = true; 
} 
+0

루프 끝 부분에 @MKR이 있다고 생각합니다. – gsamaras

+0

매번 같은 일을하는 유사한 루프를 실행하면 변수를 false로 다시 선언해야합니까? – amgtree

+2

그래 코드를 풀면 문제가 생겼어. 다시 한 번 감사드립니다! 다른 코드 스 니펫에 대한 또 다른 질문이 있습니다. 나는 새로운 질문을해야 하는가? 아니면 어디에서 질문해야 하는가? – amgtree

-1

문제는 bool check(false);의 선언입니다. 각 반복의 시작 부분에 값을 다시 할당하여 false으로 유지합니다.

간단한 수정으로 check 변수를 사용하지 않고 datecheck 만 사용할 수 있습니다.

bool datecheck(true); 
while (true) 
{ 
    std::cin>>c; 
    if (c >= 1) 
    { 
     if (b == 2 && c <= 28) 
      datecheck = false; 
     if (b == 2 && a % 4 == 0 && c <= 29) 
      datecheck = false; 
     if (b == 4 || b == 6 || b == 9 || b == 11 && c <= 30) 
      datecheck = false; 
     if (c <= 31) 
      datecheck = false; 
    } 
    if (datecheck) 
    { 
     std::cout<<"Sorry try again!"<<std::endl; 
    } 
    else 
    { 
     break; 
    } 
} 
+0

@Yunnosch 유효 시점 !! – MKR

+1

코드 전용 답변에 설명을 추가 하시겠습니까? StackOverflow가 무료 코딩 서비스라는 인상을주는 것은 그리 크지 않습니다. – Yunnosch