Есть 2 одномерных массива, нужно все не общие элементы записать в 3 массив - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Помогите решить, буду очень благодарен

Решение задачи: «Есть 2 одномерных массива, нужно все не общие элементы записать в 3 массив»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int *arr1 = NULL,// Указатель на первый массив
        *arr2 = NULL,// Указатель на второй массив
        *arr3 = NULL,// Указатель на массив несовпадающих элементов
        N1 = 0,// Размер первого массива
        N2 = 0,// Размер второго массива
        N3 = 0;// Размер третьего массива
    int i = 0, j = 0, k = 0;
    
    printf("N1 = ");
    scanf("%d", &N1);
    if(N1 <= 0)
    {
        printf("N1 <= 0\n");
        return 1;// выходим
    }
    arr1 = (int *) malloc(N1 * sizeof(int));// Выделяем память
    printf("Input array1:\n");
    for(i = 0; i < N1; i++)
        scanf("%d", &arr1[i]);
    
    printf("N2 = ");
    scanf("%d", &N2);
    if(N2 <= 0)
    {
        printf("N2 <= 0\n");
        return 1;
    }
    arr2 = (int *) malloc(N2 * sizeof(int));
    printf("Input array2:\n");
    for(i = 0; i < N2; i++)
        scanf("%d", &arr2[i]);
    
    // Сверяем первый массив со вторым
    for(i = 0; i < N1; i++)
    {
        for(j = 0; j < N2; j++)
        {
            if(arr1[i] == arr2[j])
                break;
        }
        if(j == N2)
        {
            for(k = 0; k < N3; k++)
            {
                if(arr1[i] == arr3[k])
                    break;
            }
            if(k == N3)
            {
                N3++;
                arr3 = (int *) realloc (arr3, N3 * sizeof(int));
                arr3[N3-1] = arr1[i];
            }
        }
    }
    
    // Сверяем второй массив с первым
    for(i = 0; i < N2; i++)
    {
        for(j = 0; j < N1; j++)
        {
            if(arr2[i] == arr1[j])
                break;
        }
        if(j == N1)
        {
            for(k = 0; k < N3; k++)
            {
                if(arr2[i] == arr3[k])
                    break;
            }
            if(k == N3)
            {
                N3++;
                arr3 = (int *) realloc (arr3, N3 * sizeof(int));
                arr3[N3-1] = arr2[i];
            }
        }
    }
    
    printf("\nN3 = %d\n", N3);
    printf("\nResult :\n");
    if(N3 != 0)
    {
        for(i = 0; i < N3; i++)
            printf("%d ", arr3[i]);
    }
    else
        printf("empty");
    
    printf("\n");
    
    free(arr1);
    free(arr2);
    free(arr3);
    
    return 0;
}

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

В данном коде решается задача по нахождению не общих элементов в двух массивах.

  1. Создаются три массива:
    • arr1 - первый массив;
    • arr2 - второй массив;
    • arr3 - массив для хранения не общих элементов.
  2. Пользователю предлагается ввести размер первого и второго массива.
  3. Затем пользователю предлагается ввести элементы первого и второго массива.
  4. Далее происходит сравнение элементов первого и второго массива, если элементы совпадают, то они не добавляются в массив arr3.
  5. Если после сравнения элементов первого и второго массива размер массива arr3 больше нуля, то пользователю выводятся не общие элементы массива arr3.
  6. В конце программы освобождаются выделенные области памяти. Таким образом, код решает задачу по нахождению не общих элементов в двух массивах.

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


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

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

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