2012-04-15 2 views
0

Эй, кто-нибудь может понять, что не так с моим меню в цикле while, он продолжает печатать dixie, если я нажимаю 1 в неограниченном цикле. У меня есть цикл while вокруг меню, чтобы меню всегда было для пользователя, чтобы вернуться к выборам. вот мой код:Меню C++. Неограниченный цикл в меню

#include <iostream> 
using namespace std; 

int main() 
{ 
    int choice; 
    bool menu = true; 
    cout <<"========Welcome to the database menu========\n"; 

    cout << "Press 1 to insert a new record at a particular position\n" 
      "Press 2 to delete a record from a particular position\n" 
      "Press 3 to search the database and print results\n" 
      "Press 5 to find the average experience points of players at a particular level\n" 
      "Press 6 to find and remove all duplicate entries\n" 
      "Press 0 to quit\n\n\n\n\n\n\n\n\n"; 

    cout << "Choice: "; 
    cin >> choice; 
    //***************************************************************************** 
    // Switch menu to display the menu. 
    //***************************************************************************** 
    while(menu) 
    { 
     switch (choice) 
     { 
      case 1: 
       cout << "dixie"; 
       break; 
      case 2: 
       cout << "bexie"; 
       break; 
      default: 
       cout<< "That is not a choice!!!\n"; 
     } 
    }  
    getchar(); 
    getchar(); 
} 

ответ

0

Он говорит while (menu), и это означает, что он будет продолжать делать это, пока вы не установите меню на false.

Кроме того, я думаю, вы хотите добавить cin >> choice в цикл, или он просто повторит выбор снова и снова.

+0

Спасибо, что он работает над вашим советом. Огромное спасибо. – Pendo826

2

Там нет кода, который может изменить либо menu или choice внутри while цикла. Поэтому, когда это произойдет, оно никогда не прекратится.

+0

так как я могу остановить его из loopin, как только выбран случай, но все еще показывают параметры меню? – Pendo826

+0

Проблема в том, что ваша петля находится не в том месте. Зацикливание до тех пор, пока пользователь не выберет '0', это нормально, но вы должны обрабатывать' 0' в своем 'switch'. См. Мой ответ для возможных решений, в которых должен идти цикл while. –

0

Я полагаю, что петля, а должна включать в себя печать опции меню и имеющие пользователю выбрать опцию следующим образом:

while (menu) 
{ 
    cout <<"========Welcome to the database menu========\n"; 
    cout << "Press 1 to insert a new record at a particular position\n" 
      "Press 2 to delete a record from a particular position\n" 
      "Press 3 to search the database and print results\n" 
      "Press 5 to find the average experience points of players at a particular level\n" 
      "Press 6 to find and remove all duplicate entries\n" 
      "Press 0 to quit\n\n\n\n\n\n\n\n\n"; 

    cout<< "Choice: "; 
    cin>> choice; 

    switch (choice) 
    { 
     case 1: 
      cout << "dixie"; 
      break; 
     case 2: 
      cout << "bexie"; 
      break; 
     default: 
      cout<< "That is not a choice!!!\n"; 
    } 
} 

Другая возможность начать время цикла как раз перед cout << "Choice: " линии.

0

menu переменная всегда true внутри цикла. Это то же самое, что и while(true).

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