英文:
C++ switch while infinite loop issue
问题
以下是您提供的C++代码的翻译部分:
#include <iostream>
#include <iomanip>
#include <locale>
using namespace std;
struct {
string Route;
string depTime;
string travelTime;
string endDestTime;
} Schedule1, Schedule2, Schedule3;
int main()
{
setlocale(LC_ALL, "RUSSIAN");
int routeNum = 3;
bool quit = false;
Schedule1.Route = "Ярославль--Москва"; // маршрут
Schedule1.depTime = "12.06.2023, 13:00"; // время отправления
Schedule1.travelTime = "4 часа"; // время в пути
Schedule1.endDestTime = "12.06.2023, 17:00"; // время прибытия
Schedule2.Route = "Ярославль--Санкт-Петербург";
Schedule2.depTime = "12.06.2023, 16:00";
Schedule2.travelTime = "10 часов";
Schedule2.endDestTime = "13.06.2023, 02:00";
Schedule3.Route = "Ярославль--Екатеринбург";
Schedule3.depTime = "12.06.2023, 12:00";
Schedule3.travelTime = "20 часов";
Schedule3.endDestTime = "13.06.2023, 08:00";
// выбор маршрута поезда
cout << "|----------------Расписание поездов-----------------| \n\n";
cout << "Город отправления: Город прибытия: \n";
cout << "(1) Ярославль Москва \n";
cout << "(2) Ярославль Санкт-Петербург \n";
cout << "(3) Ярославль Екатеринбург \n";
cout << "(4) Завершить" << endl;
cout << "Выберите номер маршрута: ";
cin >> routeNum;
do
{
switch (routeNum)
{
case 1:
cout << "Маршрут: " << Schedule1.Route << " " << endl;
cout << "Время отправления: " << Schedule1.depTime << " " << endl;
cout << "Время в прибытия: " << Schedule1.endDestTime << " " <<endl;
cout << "Время в пути: " << Schedule1.travelTime << " " <<endl;
cout << endl;
break;
case 2:
cout << "Маршрут: " << Schedule2.Route << " " << endl;
cout << "Время отправления: " << Schedule2.depTime << " " << endl;
cout << "Время в прибытия: " << Schedule2.endDestTime << " " <<endl;
cout << "Время в пути: " << Schedule2.travelTime << " " <<endl;
cout << endl;
break;
case 3:
cout << "Маршрут: " << Schedule3.Route << " " << endl;
cout << "Время отправления: " << Schedule3.depTime << " " << endl;
cout << "Время в прибытия: " << Schedule3.endDestTime << " " <<endl;
cout << "Время в пути: " << Schedule3.travelTime << " " <<endl;
cout << endl;
break;
case 4:
quit = true; // завершить программу
break;
default:
cout << "Выберите существующий номер маршрута"; // если введен некорректный ввод
}
}
while(!quit);
return 0;
}
这是您的C++代码的翻译部分。如果您需要更多帮助,请随时提出具体问题。
英文:
I'm a total beginner at C++ and I'm trying to make a program which displays train schedule by selecting routes from the menu. I also want to make it possible to choose multiple options and quit manually. The issue is: every input creates an infinite loop.
#include <iostream>
#include <iomanip>
#include <locale>
using namespace std;
struct {
string Route;
string depTime;
string travelTime;
string endDestTime;
} Schedule1, Schedule2, Schedule3;
int main()
{
setlocale(LC_ALL, "RUSSIAN");
int routeNum = 3;
bool quit = false;
Schedule1.Route = "Ярославль--Москва"; //route
Schedule1.depTime = "12.06.2023, 13:00"; //departure time
Schedule1.travelTime = "4 часа"; //travel time
Schedule1.endDestTime = "12.06.2023, 17:00"; //destination time
Schedule2.Route = "Ярославль--Санкт-Петербург";
Schedule2.depTime = "12.06.2023, 16:00";
Schedule2.travelTime = "10 часов";
Schedule2.endDestTime = "13.06.2023, 02:00";
Schedule3.Route = "Ярославль--Екатеринбург";
Schedule3.depTime = "12.06.2023, 12:00";
Schedule3.travelTime = "20 часов";
Schedule3.endDestTime = "13.06.2023, 08:00";
//train routes to choose from
cout<<"|----------------Расписание поездов-----------------| \n\n";
cout<<"Город отправления: Город прибытия: \n";
cout<<"(1) Ярославль Москва \n";
cout<<"(2) Ярославль Санкт-Петербург \n";
cout<<"(3) Ярославль Екатеринбург \n";
cout<<"(4) Завершить" << endl;
cout<<"Выберите номер маршрута: ";
cin >> routeNum;
do
{
switch (routeNum)
{
case 1:
cout << "Маршрут: " << Schedule1.Route << " " << endl;
cout << "Время отправления: " << Schedule1.depTime << " " << endl;
cout << "Время в прибытия: " << Schedule1.endDestTime << " " <<endl;
cout << "Время в пути: " << Schedule1.travelTime << " " <<endl;
cout<<endl;
break;
case 2:
cout << "Маршрут: " << Schedule2.Route << " " << endl;
cout << "Время отправления: " << Schedule2.depTime << " " << endl;
cout << "Время в прибытия: " << Schedule2.endDestTime << " " <<endl;
cout << "Время в пути: " << Schedule2.travelTime << " " <<endl;
cout<<endl;
break;
case 3:
cout << "Маршрут: " << Schedule3.Route << " " << endl;
cout << "Время отправления: " << Schedule3.depTime << " " << endl;
cout << "Время в прибытия: " << Schedule3.endDestTime << " " <<endl;
cout << "Время в пути: " << Schedule3.travelTime << " " <<endl;
cout<<endl;
break;
case 4:
quit = true; //quit program
break;
default:
cout << "Выберите существующий номер маршрута"; //if input is invalid
}
}
while(!quit);
return 0;
}
I know same issue has been brought before but I still can't figure out what I'm missing here. Any help would be greatly appreciated.
答案1
得分: 1
以下是翻译好的部分:
至少这个语句
cin >> routeNum;
应该在do-while循环内,例如
do
{
cin >> routeNum;
switch (routeNum)
{
//...
否则,变量routeNum
在循环内不会被改变。因此,您将会得到一个无限循环。
英文:
At least this statement
cin >> routeNum;
should be within the do-while loop as for example
do
{
cin >> routeNum;
switch (routeNum)
{
//...
Otherwise the variable routeNum
is not being changed within the loop. As a result you have an infinite loop.
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论