Зацикливается программа при проверке корректность ввода - 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; } }
Объяснение кода листинга программы
- Объявлена функция CheckValue, которая принимает в качестве аргумента указатель на целое число.
- Внутри функции объявлена переменная flag типа int, которая инициализируется значением 1.
- Далее, в цикле while (1) происходит проверка значения переменной flag.
- Если flag равно 0, то выводится сообщение об ошибке и с помощью функции scanf считывается символ, который игнорируется.
- Если flag не равно 0, то функция возвращает 0.
- В конце функции отсутствует оператор return, поэтому, если условие в цикле while (1) не выполняется, программа будет выполняться бесконечно.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д