Как сделать, чтобы 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д