do-validate, запрашивать у пользователя ввод, если он действителен, обрабатывать - PullRequest
0 голосов
/ 11 апреля 2019

Я новичок в программировании, и у меня есть некоторые проблемы в C, в частности, чтобы использовать цикл do-while при проверке некоторых условий на ввод пользователя.

Я пробовал несколько способов достижения одинаковых результатов в цикле do-while. Я пробовал while цикл внутри do {}while цикла, а также if-else внутри do{}while цикла.

Проблемы, с которыми я сталкиваюсь, состоят в том, что моя программа выполняется, даже если пользовательский ввод выходит за пределы диапазона или продолжает повторять цикл while без пересылки проверенного ввода. Я запутался и не знаю, что я делаю. Любая помощь, кто-нибудь? Я видел похожие проблемы на этом форуме с некоторым предложением просто использовать цикл «делать во время», но это не помогает без практического подхода.

Вот мой код: этот код выполняется даже при вводе 1

int main(void)

{


 // Variable declaration
 int nrow =100;
do{

   //prompt user for input
printf(" Enter size between 100 and 150: \n"); 
    scanf("%d", &nrow); 

        // here we validate user input if its more than 100 
    if( nrow >= 150){
    printf(" Too large! Try between 100 and 150: \n");
    scanf("%d", &nrow); 
      printf("\n");  
    }
     // here we validate user input if its less than 100 
     if( nrow <= 100 ){
    printf(" Too small! between 100 and 150: \n");
    scanf("%d", &nrow); 
      printf("\n");  
      }
       // here we validate user input  if it is positive # 
         else if  ( nrow %2 != 0){
             printf(" Not Exactly.. Positive please! : \n");
            scanf("%d", &nrow); 
            printf("\n"); 
         } else {
               return nrow;
         }


}while(nrow/2 >= 0 );

// some more code here using nrow parameters

Я ожидал

сделать { while (неверный пользователь imput) { предложить пользователю повторить попытку, пока не будут введены приемлемые значения } if (ввод пользователя действителен) { вперед, если в то время как цикл } } while (значение положительное и больше 100);

сделать что-то с этим значением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...