Указатели: Создать динамический массив из заданных, путем их объединения - C (СИ)
Формулировка задачи:
Даны два динамических массива размерами n и m. Создать динамический массив из заданных, путем их объединения. При помощи указателей.
Решение задачи: «Указатели: Создать динамический массив из заданных, путем их объединения»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> int main() { int n=10,m=5; int * arr1=(int*)malloc(n*sizeof(int)); int * arr2=(int*)malloc(m*sizeof(int)); int i,j; for(i=0;i<n;++i){ *(arr1+i)=rand()%10; printf("%d ",*(arr1+i)); } printf ("\n\n"); for(i=0;i<m;++i){ *(arr2+i)=rand()%10; printf("%d ",*(arr2+i)); } printf ("\n\n"); int * arr3=(int*)malloc((m+n)*sizeof(int)); for(i=0;i<n;++i) *(arr3+i)=*(arr1+i); for(i=0;i<m;++i) *(arr3+n+i)=*(arr2+i); for(i=0;i<(m+n);++i) printf("%d ",*(arr3+i)); printf ("\n\n"); free(arr1);free(arr2);free(arr3); system("pause"); }
Объяснение кода листинга программы
В данном коде происходит следующее:
- В начале программы с помощью функций
malloc
выделяется память под три динамических массива:arr1
,arr2
иarr3
. - Затем в циклах заполняются значениями первые два массива. Для этого используется генератор случайных чисел
rand()
. - После заполнения, значения выводятся на экран с помощью функции
printf
. - Затем, создается третий массив
arr3
, который будет объединять значения изarr1
иarr2
. - Используя два вложенных цикла, значения из
arr1
иarr2
копируются вarr3
. - После этого, значения из объединённого массива
arr3
выводятся на экран с помощью функцииprintf
. - В конце программы, с помощью функции
free
освобождается память, выделенная под массивы, а также с помощью командыsystem(
pause)
приостанавливается выполнение программы до нажатия клавиши.