Как сделать, чтобы Enter был концом ввода? - C (СИ)
Формулировка задачи:
printf("Vvedit chysla\n"); do{ scanf("%d",arr+i); i++; }while (arr[i]!='\n'); size=i;
Решение задачи: «Как сделать, чтобы Enter был концом ввода?»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> int isDigit(const char *); int main(void) { int index = 0, i, arr[10], state; char p[20]; printf("Vvedit chysla\n"); do { gets(p); state = isDigit(p); if (state) arr[index++] = atoi(p); } while (p[0] != '\0' && state && index < 10); for (i=0; i < index; i++) printf("%d ", arr[i]); return 0; } int isDigit(const char *str) { size_t i, len = strlen(str); if (len == 0) return 0; for (i = 0; i < len; i++) if (!isdigit(str[i])) return 0; return 1; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы для работы с основами ввода-вывода, строками и цифрами.
- Объявляем функцию isDigit(), которая принимает строку и возвращает 1, если все символы строки являются цифрами, и 0 в противном случае.
- В функции main() объявляем переменные: — index — счётчик для индексации массива; — i — счётчик для цикла; — arr — массив для хранения вводимых чисел; — state — флаг, который считывает значение из функции isDigit(); — p — строка, в которую считывается число.
- Выводим сообщение
Vvedit chysla
(Введите числа). - Запускаем цикл do-while, который будет выполняться до тех пор, пока: — p[0] не станет нулём (что означает завершение ввода); — state не станет равным нулю (что означает, что введенная строка не является числовой); — index не станет больше 10 (что означает переполнение массива).
- Внутри цикла считываем строку с помощью функции gets() и проверяем её с помощью функции isDigit().
- Если функция isDigit() вернула 1, то преобразуем строку в целое число с помощью функции atoi() и сохраняем его в массиве arr[index++].
- После окончания цикла выводим числа, сохраненные в массиве, с помощью цикла for и функции printf().
- Возвращаем 0 из функции main(), что означает успешный конец работы программы.
- В функции isDigit() объявляем цикл for, который будет проверять каждый символ строки на цифру с помощью функции isdigit().
- Если найден хотя бы один нецифровой символ, то возвращаем 0.
- Если все символы являются цифрами, то возвращаем 1.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д