2015-05-27 5 views
0

, поэтому я сделал эту простую программу, используя учебник, который я следую по YouTube, но я не был показан, как дать пользователю возможность дать новый выбор, если предыдущий недействительно.Как заполнить эту программу

Программа выглядит следующим образом:

#include <iostream> 

using namespace std; 

int main() { 

    cout << "1. Search" << endl; 
    cout << "2. Quit This Program" << endl; 
    cout << "3. View Record" << endl; 

    cout << "Enter Your Selection Please > " << flush; 

    int input; 
    cin >> input; 

    switch(input) { 
    case 1: 
     cout << "Searching..." << endl; 
     break; 

    case 2: 
     cout << "Quitting This Program" << endl; 
     break; 

    case 3: 
     cout << "Searching For Record For Viewing..." << endl; 
     break; 
    default: 
     cout << "That is not a valid option" << endl; 
     cout << "Please choose a selection from the menu:" << endl; 
    } 

    return 0; 


} 

ответ

2

нужен цикл, чтобы проверить, если выбор является действительным или нет, если это действительно разорвать цикл, если он недействительно пребывание в цикле до тех пор, пока не действует.

#include <iostream> 

    using namespace std; 

    int main() { 
     bool selection = false; 
     while(!selection){ 
      cout << "1. Search" << endl; 
      cout << "2. Quit This Program" << endl; 
      cout << "3. View Record" << endl; 

      cout << "Enter Your Selection Please > " << flush; 


      int input; 
      cin >> input; 

      switch(input) { 
      case 1: 
       cout << "Searching..." << endl; 
       selection = true; 
       break; 

      case 2: 
       cout << "Quitting This Program" << endl; 
       selection = true; 
       break; 

      case 3: 
       cout << "Searching For Record For Viewing..." << endl; 
       selection = true; 
       break; 
      default: 
       cout << "That is not a valid option" << endl; 
       cout << "Please choose a selection from the menu:" << endl; 
      } 
     } 

     return 0; 


    } 
+0

спасибо за помощь –

+0

Не будет ли более отказоустойчивые подход будет установить '' selection' на true' перед 'switch' и только установить его на' false' в 'default' случае? Теперь вы должны помнить об этом в каждом случае. –

+0

Да, выбор на true действительно будет лучше, так как это потребует меньшего обслуживания, но может быть немного запутанным для новичка, хотя ... – Xela

2

Это хорошо использовать случай do - петли while:

#include <iostream> 

using namespace std; 

int main() { 

    cout << "1. Search" << endl; 
    cout << "2. Quit This Program" << endl; 
    cout << "3. View Record" << endl; 

    cout << "Enter Your Selection Please > " << flush; 

    int input = -1; 
    bool valid = false; 
    do { 
     cin >> input; 
     valid = (cin >= 0 && valid <= 3); 
     if(!valid) { 
      cout << "Please try again..." << endl; 
     } 
    } while(!valid); 

    switch(input) { 
    case 1: 
     cout << "Searching..." << endl; 
     break; 

    case 2: 
     cout << "Quitting This Program" << endl; 
     break; 

    case 3: 
     cout << "Searching For Record For Viewing..." << endl; 
     break; 
    default: 
     cout << "That is not a valid option" << endl; 
     cout << "Please choose a selection from the menu:" << endl; 
    } 

    return 0; 


} 

Преимущество использования есть do - while является то, что проверка сосредоточено на верхней части и тем самым компактным. Недостаток такого подхода заключается в том, что валидация центрируется вверху, и вы таким образом более или менее дублируете процедуру с параметрами: если вы добавите новую опцию, вам также придется изменить процесс проверки.

+0

Вы, вероятно, хотите 'while (! Valid)' –

+0

@ AnthonyVallée-Dubois: действительно, большое спасибо за то, что вы нашли ... –

0
#include <iostream> 

using namespace std; 

int main() { 

    cout << "1. Search" << endl; 
    cout << "2. Quit This Program" << endl; 
    cout << "3. View Record" << endl; 
    do 
    { 
     cout << "Enter Your Selection Please > " << flush; 

     int input; 
     cin >> input; 

     switch(input) { 
     case 1: 
      cout << "Searching..." << endl; 
      break; 

     case 2: 
      cout << "Quitting This Program" << endl; 
      break; 

     case 3: 
      cout << "Searching For Record For Viewing..." << endl; 
      break; 
     default: 
      cout << "That is not a valid option" << endl; 
      cout << "Please choose a selection from the menu:" << endl; 
     }while(input != 2) 

    } 

    return 0; 


} 
Смежные вопросы