Проверка на корректность данных - C (СИ)
Формулировка задачи:
Нужно чтобы данные переменная была типа %d и больше 1, как это проверить? Предположил, что так:
while(ni==0) { printf("Введите количество элементов: "); scanf_s("%d",&ni); if(!ni || ni<1) { printf("Введите верные данные\n"); ni=0; } }
Решение задачи: «Проверка на корректность данных»
textual
Листинг программы
int IsValidEnter(char *str) { int i; if (str[0] < '1' && str[0] > '9') return 0; for (i = 1; i < strlen(str); i++) if (str[0] < '0' && str[0] > '9') return 0; return 1; } int StrToInt (char *str) { int i; int res = 0; for (i = 0; i < strlen(str); i++) { res *= 10; res += (str[i]-'0'); } return res; } int main() { char s[255]; int ni; ... while(1) { printf("Введите количество элементов: "); gets(str); if(!IsValidEnter(s)) { printf("Введите числовые данные.\n"); continue; } ni = StrToInt(s); if (ni < 1) { printf("Количество должно быть больше единицы.\n"); continue; } break; } }
Объяснение кода листинга программы
- Функция
IsValidEnter
проверяет, является ли введенное значение числовым. - Если первый символ не является числом, функция возвращает 0.
- Если любой последующий символ не является числом, функция возвращает 0.
- Если все символы являются числами, функция возвращает 1.
- Функция
StrToInt
преобразует строку в целое число. - Для преобразования каждого символа в число, он вычитается из символа '0'.
- Результат умножается на 10 и добавляется к общему результату.
- В функции
main
вводится количество элементов. - Если введенное значение не является числом, выводится сообщение об ошибке и цикл продолжается.
- Если введенное значение меньше 1, выводится сообщение об ошибке и цикл продолжается.
- Если введенное значение является числом, программа продолжает работу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д