Заменить значения элементов в двух массивах - C (СИ)
Формулировка задачи:
Есть два одномерных целочисленных массива, задание состоит в том, чтобы заменить в них местами соответствующие элементы. Как это сделать при условии, что размеры массивов задаются вручную и могут и один может быть больше другого?
Решение задачи: «Заменить значения элементов в двух массивах»
textual
Листинг программы
#include <stdlib.h> #include <stdio.h> #include <string.h> #include <time.h> void memarr(int *arr1, int *arr2, int size1, int size2, int max) { int *arr_t = malloc (max*sizeof(int)); memcpy (arr_t, arr1, size1*sizeof(int)); memcpy (arr1, arr2, size2*sizeof(int)); memcpy (arr2, arr_t, size1*sizeof(int)); free(arr_t); } void printarr (int *arr, int len) { for (int i=0; i<len; i++) printf("%i", *(arr+i)); printf("\n"); } void fillMasRand(int *m, int c) { for(int i=0;i<c; i++) m[i]=rand()%10; } int main(void) { int size_arr1 = 10; int size_arr2 = 5; int *arr1 = malloc (size_arr1*sizeof(int)); int *arr2 = malloc (size_arr1*sizeof(int)); srand(time(NULL)); fillMasRand(arr1, size_arr1); fillMasRand(arr2, size_arr2); printarr(arr1, size_arr1); printarr(arr2, size_arr2); if (size_arr1>size_arr2) { arr2=realloc(arr2, size_arr1); memarr(arr1, arr2, size_arr1, size_arr2, size_arr1); } else { arr1=realloc(arr1, size_arr2); memarr(arr2, arr1, size_arr2, size_arr1, size_arr2); } printarr(arr1, size_arr2); printarr(arr2, size_arr1); free(arr1); free(arr2); }
Объяснение кода листинга программы
- В функции
memarr
массивыarr1
иarr2
копируются между собой с использованием функцииmemcpy
. - В функции
printarr
элементы массива выводятся на экран с помощью циклаfor
и функцииprintf
. - В функции
fillMasRand
в каждом элементе массива генерируется случайное число от 0 до 9 с помощью функцииrand()
. - В функции
main
создаются два массиваarr1
иarr2
одинакового размераsize_arr1
с помощью функцииmalloc
. - Массив
arr1
заполняется случайными числами с помощью функцииfillMasRand
. - Массив
arr2
заполняется случайными числами с помощью функцииfillMasRand
. - С помощью функции
printarr
на экран выводятся элементы массиваarr1
иarr2
. - Если размер массива
arr1
больше размера массиваarr2
, то с помощью функцииrealloc
массивarr2
изменяется, чтобы его размер был равен размеру массиваarr1
. - Затем вызывается функция
memarr
, которая меняет значения элементов в массивахarr1
иarr2
. - Если размер массива
arr1
меньше размера массиваarr2
, то с помощью функцииrealloc
массивarr1
изменяется, чтобы его размер был равен размеру массиваarr2
. - Затем снова вызывается функция
memarr
, которая меняет значения элементов в массивахarr1
иarr2
. - С помощью функции
printarr
на экран выводятся элементы массиваarr1
иarr2
. - В конце программы вызываются функции
free
, чтобы освободить память, занятую массивамиarr1
иarr2
.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д