я в настоящее время путаю на то время петли, в частности, почему цикл до сих пор работает все остальное в цикле конкретно после того, как значение сторожевого достигаются ...в то время как цикл продолжается после того, как значение сторожевого достигается
вот пример моих код ниже:
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 . . .
можно ли каким-либо образом отредактировать код, чтобы он сразу же вышел из цикла или это так, как все петли запрограммированы заранее?
любые советы будут оценены
Разрыв внутри коммутатора прерывает только выключатель, а не цикл while. вы должны либо использовать, чтобы проверить или завершить тест после блока переключателя. – Shiping