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