2017-02-14 5 views
1

에 도달 한 후 계속 내 아래 코드 :동안 루프는 루프가 여전히 센티널 값에 도달 할 때 특히 후 루프에서 다른 모든 ... 실행 왜 루프, 특히 여기 <p></p>이의 예입니다 동안 감시 값이 나는 현재에 혼동하고있어

while (quit != -1) { 
cout<<"Options: a)ir; w)ater; s)teel; q)uit \n"; 
char option=' '; 
cin>>option; 
option = toupper(option); 
while(option != 'A' && option != 'W' && option != 'S' && option != 'Q'){ 
    cin.clear(); 
    cout<<"INVALID INPUT!! \n"; 
    cin>>option; 
    option = toupper(option); 
    } 
    switch(option){ 
     case 'Q': 
      cout<<"You Have Quit!"; 
      quit = -1; 
      break; 
    } 
    cout<<"Please input the distance: \n"; 
    double distance=0; 
    cin>>distance; 
     while(distance < 0){ 
      cin.clear(); 
      cout<<"INVALID INPUT \n"; 
      cin>>distance; 
     } 
    switch(option){ 
     case 'A': 
      seconds = distance/speed_a; 
      cout<< "Time travled: " << setprecision(2) << fixed << seconds << "\n"; 
      break; 
     case 'W': 
      seconds = distance/speed_w; 
      cout<< "Time travled: " << setprecision(2) << fixed << seconds << "\n"; 
      break; 
     case 'S': 
      seconds = distance/speed_s; 
      cout<< "Time travled: " << setprecision(2) << fixed << seconds << "\n"; 
      break; 
    } 
} 

사용자가 종료 스위치 문을 실행하는 'Q'문자를 입력 기본적으로 ... 그것은 루프를 종료 않지만 여전히 ..

루프를 종료하기 전에 이동 한 거리 요청

출력은 다음과 같습니다.

Options: a)ir; w)ater; s)teel; q)uit 
    q 
    You Have Quit! 
    Please input the distance: 
    0 

    -------------------------------- 
    Process exited after 2.944 seconds with return value 0 
    Press any key to continue . . . 

코드를 편집하여 루프를 즉시 종료하거나 모든 루프가 미리 프로그래밍 된 방식 일 수 있습니까?

어떤 조언은 스위치 케이스 내부 break 문은 스위치 블록, 루프 동안이 아닌 외부를 종료

+0

스위치 내부의 중단은 스위치 만 중단하고 while 루프는 중단시키지 않습니다. 옵션을 테스트하려면 if를 사용하고 스위치 블록 다음에 테스트를 종료해야합니다. – Shiping

답변

1

을 감상 할 수있다. while 루프 조건의 다음 평가 때까지 코드는 계속 실행됩니다.