Зацикливается программа при проверке корректность ввода - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Добавил в программу проверку на корректный ввод:
      flag=scanf("%d",&l.num[i]);
     while (1>flag)
     {
       puts("Vvodit mojno tolko celie chisla\nPovtorite Vvod\n");
       flag=scanf("%d",&l.num[i]);
     }
Но почему-то программа зацикливается и не дает мне повторно ввести правильное число.

Решение задачи: «Зацикливается программа при проверке корректность ввода»

textual
Листинг программы
int CheckValue(int *a){
int flag;
for (;;){
flag=scanf("%d",a);
 if (!flag){
     printf("Chislo mojet bitb tolko celim\nvvedite korrectnie dannie\n");
     scanf("%*c"); 
     }
     else return 0;
    }
 
 }

Объяснение кода листинга программы

  1. Объявлена функция CheckValue, которая принимает в качестве аргумента указатель на целое число.
  2. Внутри функции объявлена переменная flag типа int, которая инициализируется значением 1.
  3. Далее, в цикле while (1) происходит проверка значения переменной flag.
  4. Если flag равно 0, то выводится сообщение об ошибке и с помощью функции scanf считывается символ, который игнорируется.
  5. Если flag не равно 0, то функция возвращает 0.
  6. В конце функции отсутствует оператор return, поэтому, если условие в цикле while (1) не выполняется, программа будет выполняться бесконечно.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.286 из 5
Похожие ответы