Как сделать, чтобы Enter был концом ввода? - C (СИ)

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

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

Листинг программы
  1. printf("Vvedit chysla\n");
  2. do{
  3. scanf("%d",arr+i);
  4. i++;
  5. }while (arr[i]!='\n');
  6. size=i;

Решение задачи: «Как сделать, чтобы Enter был концом ввода?»

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <ctype.h>
  5.  
  6. int isDigit(const char *);
  7.  
  8. int main(void)
  9. {
  10.     int index = 0, i, arr[10], state;
  11.     char p[20];
  12.     printf("Vvedit chysla\n");
  13.     do
  14.     {
  15.         gets(p);
  16.         state = isDigit(p);
  17.         if (state) arr[index++] = atoi(p);
  18.     } while (p[0] != '\0' && state && index < 10);
  19.  
  20.     for (i=0; i < index; i++)
  21.         printf("%d ", arr[i]);
  22.     return 0;
  23. }
  24.  
  25. int isDigit(const char *str)
  26. {
  27.     size_t i, len = strlen(str);
  28.     if (len == 0) return 0;
  29.     for (i = 0; i < len; i++)
  30.         if (!isdigit(str[i]))
  31.             return 0;
  32.     return 1;
  33. }

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

  1. Включаем необходимые заголовочные файлы для работы с основами ввода-вывода, строками и цифрами.
  2. Объявляем функцию isDigit(), которая принимает строку и возвращает 1, если все символы строки являются цифрами, и 0 в противном случае.
  3. В функции main() объявляем переменные: — index — счётчик для индексации массива; — i — счётчик для цикла; — arr — массив для хранения вводимых чисел; — state — флаг, который считывает значение из функции isDigit(); — p — строка, в которую считывается число.
  4. Выводим сообщение Vvedit chysla (Введите числа).
  5. Запускаем цикл do-while, который будет выполняться до тех пор, пока: — p[0] не станет нулём (что означает завершение ввода); — state не станет равным нулю (что означает, что введенная строка не является числовой); — index не станет больше 10 (что означает переполнение массива).
  6. Внутри цикла считываем строку с помощью функции gets() и проверяем её с помощью функции isDigit().
  7. Если функция isDigit() вернула 1, то преобразуем строку в целое число с помощью функции atoi() и сохраняем его в массиве arr[index++].
  8. После окончания цикла выводим числа, сохраненные в массиве, с помощью цикла for и функции printf().
  9. Возвращаем 0 из функции main(), что означает успешный конец работы программы.
  10. В функции isDigit() объявляем цикл for, который будет проверять каждый символ строки на цифру с помощью функции isdigit().
  11. Если найден хотя бы один нецифровой символ, то возвращаем 0.
  12. Если все символы являются цифрами, то возвращаем 1.

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


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

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

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы