2016-01-27 4 views
-1

, поэтому я пытался сделать меню с большим количеством подменю. Главное меню - цикл while while, поэтому, если пользователь попытался ввести нерелевантный ввод, он позволит ему снова войти. Мне было интересно, могу ли я сделать то же самое с подменю, но цикл подменю продолжается, даже если я напишу правильный ввод. Вот код:Вложенные do while loop

do 
{ 

    printf("Enter your choice: "); 
     scanf(" %d", &choice1); 
     switch (choice1) 
     { 



      case (1) : 

      do { 
        printf("4 printfs of choices"); 


        printf("Enter your choice: "); 
         scanf(" %d", &choice2); 


       switch (choice2) 
         { 

       case (1): 
         { 
         stuff 
         } 
        break; 

       case (2) : 
         { 
         stuff 
         } 
        break; 

       case (3) : 
         { 
         stuff 
         } 
        break; 

       case (4) : 
         { 
         exit(0); 
         } 

       default : 
         { 
         printf("Sorry that is not a valid choice!\n"); 
         } 
         break; 
       } 
      } while ((choice2 > 0) || (choice2 < 5)); 
     break; 

Существует еще один, а окончание для основного цикла, который не является моего беспокойства

+3

Боженька исправить форматирование. – CollinD

+1

@CollinD Извините, я нахожусь на нем –

+0

Надеюсь, что я не оторвался от скуки, иначе это было просто потрясающе, ха-ха! – CollinD

ответ

1

Я думаю, что вы хотите while ((choice2 < 1) || (choice2 > 4));

+0

Да, это сработало, спасибо. Но не могли бы вы объяснить мне, что случилось, пожалуйста? –

+0

О, я просто понял это, и я даже чувствую себя неловко за то, что написал этот вопрос. –

2

(Choice2> 0) || (выбор2 < 5)

Всегда верно, вы, вероятно, имеете в виду &&.

+0

Он даже не повторит меню, если я положил && –

+1

@djechlin Это назад. Цикл должен прервать этот тест, а не продолжить. Итак, '! ((Choice2> 0) && (выбор2 <5))' будет работать. – FredK

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

  • Нет связанных вопросов^_^