Как я могу добавить условие к этому, пока l oop? - PullRequest
0 голосов
/ 24 апреля 2020

Я относительно знаком с программированием на с ++ и вообще. Я изо всех сил пытаюсь добавить условие в мое время l oop, которое уже выполняет некоторую проверку данных.

    int again;
cout << "Do you want to search again?\n[1] Yes\n[2] No\n\n Please choose your option:  ";
cin >> again;
while (!(cin >> again)) {
  cout << "Please enter a valid number: ";
  cin.clear(); //clears the input
  cin.ignore(1000, '\n');// clears 1000 characters of input
}

Пока проверка работает, как я сказал выше, я изо всех сил пытаюсь получить условие там для этого требуется, чтобы пользователь вводил 1 или 2, поскольку параметры указывают все в одном, в то время как l oop.

Спасибо.

1 Ответ

2 голосов
/ 24 апреля 2020

Некоторые могут найти более читабельным все oop с условиями внутри тела.

int again = 0;
for(;;)
{ 
    std::cout << "Do you want to search again?\n"
                 "[1] Yes\n"
                 "[2] No\n\n"
                 "Please choose your option:  ";
    std::cin >> again;
    if ( std::cin.eof() )
    {
         std::cerr << "Unexpected end of input.\n";
         again = 2;  // No, you probably don't want to search again.
         break;
    }
    if ( !std::cin )
    {
         std::cout << "Please enter a valid number.\n";
         std::cin.clear();
         std::cin.ignore(1000, '\n');
         continue;
    }
    if ( again == 1  ||  again == 2)
    {
         break;
    }
    std::cout << "Please enter 1 or 2.\n";
}
...