На базе динамического массива выделить другой, в котором будут неповторяющиеся чётные числа - C (СИ)
Формулировка задачи:
Ребят, помогайте пожалуйста)
Дан динамический массив, выделить другой, в котором будут не повторяющиеся четные числа(без разницы,какой ввод массива рандомный или с клавиатуры). Написать отдельно функцию для заведения памяти .
Спасибо)
Решение задачи: «На базе динамического массива выделить другой, в котором будут неповторяющиеся чётные числа»
textual
Листинг программы
#include <stdio.h>
#include <malloc.h>
int main ()
{
int *A,*U,i,j,n,p,m;
printf("n=");
scanf("%d",&n);
A=(int *) calloc(sizeof(int),n);
for (i=0; i<n; i++)
{
printf("A[%d]=",i);
scanf("%d",&A[i]);
}
B=(int *) calloc(sizeof(int),n);
m=-1;
for (i=0; i<n; i++)
{
p=0;
for (j=0; j<m; j++)
if (B[j]==A[i])
{
p=-1;
break;
}
if (p==0) B[++m]=A[i];
}
printf("Uniq elements:\n");
for (j=0; j<m; j++) printf("%d ",B[j]);
printf("\n");
free(A);
free(B);
}
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Пользователю предлагается ввести количество элементов массива (n).
- Выделяется динамический массив A размером n, который будет заполняться числами.
- Пользователю предлагается ввести n чисел и сохранить их в массиве A.
- Выделяется динамический массив B размером n, который будет хранить уникальные четные числа.
- Инициализируется переменная m=-1, которая будет использоваться для контроля количества уникальных чисел.
- В цикле обрабатываются все числа в массиве A.
- Если число уже есть в массиве B, то оно пропускается.
- Если число не найдено в массиве B, то оно добавляется в конец массива B и значение m увеличивается на 1.
- Выводится список уникальных четных чисел.
- Массивы A и B освобождаются от выделенной памяти.