Заменить значения элементов в двух массивах - 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);
}

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

  1. В функции memarr массивы arr1 и arr2 копируются между собой с использованием функции memcpy.
  2. В функции printarr элементы массива выводятся на экран с помощью цикла for и функции printf.
  3. В функции fillMasRand в каждом элементе массива генерируется случайное число от 0 до 9 с помощью функции rand().
  4. В функции main создаются два массива arr1 и arr2 одинакового размера size_arr1 с помощью функции malloc.
  5. Массив arr1 заполняется случайными числами с помощью функции fillMasRand.
  6. Массив arr2 заполняется случайными числами с помощью функции fillMasRand.
  7. С помощью функции printarr на экран выводятся элементы массива arr1 и arr2.
  8. Если размер массива arr1 больше размера массива arr2, то с помощью функции realloc массив arr2 изменяется, чтобы его размер был равен размеру массива arr1.
  9. Затем вызывается функция memarr, которая меняет значения элементов в массивах arr1 и arr2.
  10. Если размер массива arr1 меньше размера массива arr2, то с помощью функции realloc массив arr1 изменяется, чтобы его размер был равен размеру массива arr2.
  11. Затем снова вызывается функция memarr, которая меняет значения элементов в массивах arr1 и arr2.
  12. С помощью функции printarr на экран выводятся элементы массива arr1 и arr2.
  13. В конце программы вызываются функции free, чтобы освободить память, занятую массивами arr1 и arr2.

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


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

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

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