Ввести массив целых чисел, количество элементов которого заранее неизвестно - C (СИ)

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

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

Ввести массив целых чисел, количество элементов которого заранее неизвестно. Признаком конца ввода массива является ввод последовательности из одного положительного, одного отрицательного числа и одного нуля. Вывести массив на экран. Заранее спасибо.

Решение задачи: «Ввести массив целых чисел, количество элементов которого заранее неизвестно»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
main()
{
  int *Array;
  int *PArray;
  int Num, i, flag;
  i = 0;
  flag = 1;
  while ( flag != 0 )
  {
     printf("Enter number (%d):",i);
     scanf("%d",&Num);
     i++;
     PArray = (int*) realloc( Array , i*sizeof(int));
     Array = PArray;
     Array[i-1] = Num;
     if ( i >= 3 )
     {
        int l, g, count1,count2,count3;
        g = i - 1;count1 = 0;
        count2=0;count3 = 0;l = i - 3;
        for ( ; g >= l ; g-- )
        {
          if ( Array[g] == 0 && count1 != 1) count1++;
          if ( Array[g-1] < 0 && count2 != 1) count2++;
          if ( Array[g-2] > 0 && count3 != 1) count3++;
          if ( (count1+count2+count3) == 3 )flag = 0;
         }
     }
  }
  int k;
  k = 0;
  for ( ; k < i ; k++ )
      printf("%d\n",Array[k]);
     free(Array);
}

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

В этом коде:

  1. Объявлены следующие переменные:
    • Array - указатель на массив целых чисел, размер которого будет увеличиваться динамически.
    • PArray - указатель на Array, используется для безопасного освобождения памяти.
    • Num - переменная для ввода числа.
    • i - счётчик, отсчитывающий количество введенных чисел.
    • flag - флаг, который сбрасывается при выполнении определенного условия.
  2. В цикле while происходит следующее:
    • Выводится сообщение с приглашением к вводу числа.
    • Пользователь вводит число, которое сохраняется в переменной Num.
    • Счётчик i увеличивается на 1.
    • Динамически выделяется память под новый элемент массива.
    • Указатель Array обновляется, чтобы указывать на новый блок памяти.
    • Новый элемент массива инициализируется значением введенного числа.
    • Если размер массива превышает 3, то проверяется условие: если в первых трёх элементах массива подряд встречаются 0, -1 и 1, то флаг сбрасывается.
  3. После выхода из цикла while выполняется следующее:
    • Переменная k инициализируется нулем.
    • В цикле for выводятся все элементы массива.
    • Массив освобождается с помощью функции free.

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


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

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

12   голосов , оценка 3.917 из 5
Похожие ответы