Как сделать, чтобы 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;
}

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

  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
Похожие ответы