Есть 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;
}
Объяснение кода листинга программы
В данном коде решается задача по нахождению не общих элементов в двух массивах.
- Создаются три массива:
- arr1 - первый массив;
- arr2 - второй массив;
- arr3 - массив для хранения не общих элементов.
- Пользователю предлагается ввести размер первого и второго массива.
- Затем пользователю предлагается ввести элементы первого и второго массива.
- Далее происходит сравнение элементов первого и второго массива, если элементы совпадают, то они не добавляются в массив arr3.
- Если после сравнения элементов первого и второго массива размер массива arr3 больше нуля, то пользователю выводятся не общие элементы массива arr3.
- В конце программы освобождаются выделенные области памяти. Таким образом, код решает задачу по нахождению не общих элементов в двух массивах.