Ввод/Вывод данных в динамический массив - C (СИ)
Формулировка задачи:
Помогите пожалуйста, нифига не получается Ввод/Вывод данных в динамический массив Си.
цикл 1. пока пользователь вводит 1 (признак да) мы вводим новые данные и заносим их в массив динамический.
и это может продолжаться произвольное количество раз. размер массива для тебя заранее неизвестен.
как только ввели 0 переходим к следующему циклу.
Цикл 2. выводит содержимое массива на экран.
Решение задачи: «Ввод/Вывод данных в динамический массив»
textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
int main( int argc , char* argv[] ) {
int * Arr = malloc(sizeof(int));
int Enter = -1;
int i = 0, j = 0;
while( 1 ) {
scanf("%d",&Enter);
if(Enter == 0) break;
Arr[i++] = Enter;
Arr = realloc(Arr, sizeof(int) * (i + 1));
}
while(j < i) {
printf("[ %d ] ",Arr[j++]);
}
getchar(); getchar();
return 0;
}
Объяснение кода листинга программы
В этом коде:
- Объявлены следующие переменные:
- Arr (указатель на массив целых чисел)
- Enter (целое число, используемое для чтения значений из стандартного ввода)
- i (целое число, счетчик элементов массива)
- j (целое число, счетчик элементов массива)
- В цикле while программа читает значения от пользователя и сохраняет их в массиве Arr.
- Сначала происходит попытка освободить память, выделенную под массив Arr, и выделить новую память под массив, размер которого на 1 больше, чем текущий размер массива.
- Если пользователь ввел 0, то цикл прерывается.
- Значение, введенное пользователем, сохраняется в массиве Arr и увеличивается счетчик i.
- После окончания цикла, программа выводит все элементы массива Arr с помощью цикла while.
- Значения массива выводятся с помощью функции printf.
- Счетчик j инициализируется значением 0 и увеличивается на 1 после каждой итерации цикла.
- В конце программы происходит считывание двух символов с помощью функции getchar, чтобы программа не закрылась сразу после вывода последнего элемента массива.
- Программа возвращает 0, что означает успешное выполнение.