2016-03-06 2 views
1

У меня есть функция, когда пользователю будет предложено выбрать один из трех вариантов.break a for loop внутри оператора switch

1.for вставка 2.for удалить 0.for бросить

я есть бесконечное цикл, который будет постоянно просить пользователя сделать что-то. Но если пользователь выбирает 0, я хочу, чтобы бесконечный цикл прерывался. Но я не могу понять, как разбить цикл for внутри корпуса switch.How я могу это сделать? Спасибо!

for(;;){ 
     printf("please enter :\n"); 
     printf("1 for INSERT\n"); 
     printf("2 for DELETE\n"); 
     printf("0 for quit\n"); 

     printf("what's your value ?\n"); 
     scanf("%d",&operation); 
     switch(operation){ 
      case 1: 
       printf("you choose to INSERT. Please inter a value to insert\n"); 
       scanf("%d",&value); 
       insertAtBeginning(value); 
       break; 
      case 2: 
       printf("you choose to DELETE\n"); 

       deleteFromBeginning(); 
       break; 
      case 0: 
        break; 
     } 
} 
+0

Для трех вариантов может также использоваться и 'if/else if/else' chain; коммутатор ничего не получает и блокирует работу «break». Конечно, 'goto' на ярлыке чуть ниже цикла' for' тоже есть опция. – ShadowRanger

ответ

1

может быть, и можно попробовать некоторое время (выбор! = 0), а не бесконечна цикл

2

Вместо бесконечного for цикла, вы можете использовать while петлю и проверить значение operation вместо и выйти из 0 случай:

operation = -1;    // initialize 
while (operation != 0) {  // check operation instead 
    printf("please enter :\n"); 
    printf(" 1 for INSERT\n"); 
    printf("2 for DELETE\n"); 
    printf("0 for quit\n"); 

    printf("what's your value ?\n"); 
    scanf("%d",&operation); 
    switch(operation){ 
     case 1: 
      printf("you choose to INSERT. Please inter a value to insert\n"); 
      scanf("%d",&value); 
      insertAtBeginning(value); 
      break; 
     case 2: 
      printf("you choose to DELETE\n"); 

      deleteFromBeginning(); 
      break; 
    } 
} 
1

Используйте флаг, чтобы решить, когда ломаются.

bool end = false; 

for(;!end;) { 
    switch(operation) { 
     case 0: 
      end = true; 
      break; 
    } 
} 
+0

это дает мне ошибку –

+0

Какая ошибка дает вам? – CrimsonKnights

0

Вы можете достичь его, поставив условие, если для вас условия 0 и положить перерыв. if (ваше состояние == 0) break; Значение слова break в выражении switch не означает выход из цикла for, он просто выходит из корпуса коммутатора.