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

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

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

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

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

textual
Листинг программы
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. int main()
  5. {
  6.     int *arr1 = NULL,// Указатель на первый массив
  7.         *arr2 = NULL,// Указатель на второй массив
  8.         *arr3 = NULL,// Указатель на массив несовпадающих элементов
  9.         N1 = 0,// Размер первого массива
  10.         N2 = 0,// Размер второго массива
  11.         N3 = 0;// Размер третьего массива
  12.     int i = 0, j = 0, k = 0;
  13.    
  14.     printf("N1 = ");
  15.     scanf("%d", &N1);
  16.     if(N1 <= 0)
  17.     {
  18.         printf("N1 <= 0\n");
  19.         return 1;// выходим
  20.     }
  21.     arr1 = (int *) malloc(N1 * sizeof(int));// Выделяем память
  22.     printf("Input array1:\n");
  23.     for(i = 0; i < N1; i++)
  24.         scanf("%d", &arr1[i]);
  25.    
  26.     printf("N2 = ");
  27.     scanf("%d", &N2);
  28.     if(N2 <= 0)
  29.     {
  30.         printf("N2 <= 0\n");
  31.         return 1;
  32.     }
  33.     arr2 = (int *) malloc(N2 * sizeof(int));
  34.     printf("Input array2:\n");
  35.     for(i = 0; i < N2; i++)
  36.         scanf("%d", &arr2[i]);
  37.    
  38.     // Сверяем первый массив со вторым
  39.     for(i = 0; i < N1; i++)
  40.     {
  41.         for(j = 0; j < N2; j++)
  42.         {
  43.             if(arr1[i] == arr2[j])
  44.                 break;
  45.         }
  46.         if(j == N2)
  47.         {
  48.             for(k = 0; k < N3; k++)
  49.             {
  50.                 if(arr1[i] == arr3[k])
  51.                     break;
  52.             }
  53.             if(k == N3)
  54.             {
  55.                 N3++;
  56.                 arr3 = (int *) realloc (arr3, N3 * sizeof(int));
  57.                 arr3[N3-1] = arr1[i];
  58.             }
  59.         }
  60.     }
  61.    
  62.     // Сверяем второй массив с первым
  63.     for(i = 0; i < N2; i++)
  64.     {
  65.         for(j = 0; j < N1; j++)
  66.         {
  67.             if(arr2[i] == arr1[j])
  68.                 break;
  69.         }
  70.         if(j == N1)
  71.         {
  72.             for(k = 0; k < N3; k++)
  73.             {
  74.                 if(arr2[i] == arr3[k])
  75.                     break;
  76.             }
  77.             if(k == N3)
  78.             {
  79.                 N3++;
  80.                 arr3 = (int *) realloc (arr3, N3 * sizeof(int));
  81.                 arr3[N3-1] = arr2[i];
  82.             }
  83.         }
  84.     }
  85.    
  86.     printf("\nN3 = %d\n", N3);
  87.     printf("\nResult :\n");
  88.     if(N3 != 0)
  89.     {
  90.         for(i = 0; i < N3; i++)
  91.             printf("%d ", arr3[i]);
  92.     }
  93.     else
  94.         printf("empty");
  95.    
  96.     printf("\n");
  97.    
  98.     free(arr1);
  99.     free(arr2);
  100.     free(arr3);
  101.    
  102.     return 0;
  103. }

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

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

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

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


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

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

11   голосов , оценка 4.273 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы