Дан целочеслинный массив размера N. Удалите из массива все одинаковые элементы, оставив их первое вхождение - C (СИ)

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

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

Дан целочеслинный массив размера N. Удалите из массива все одинаковые элементы, оставив их первое вхождение. Если будут комментарии, несомненно буду рад

Решение задачи: «Дан целочеслинный массив размера N. Удалите из массива все одинаковые элементы, оставив их первое вхождение»

textual
Листинг программы
int *getUniq(int *A, int n)
{
     int *r; 
     int i,j,f,p;
     r=(int *) calloc(n,sizeof(int));
     r[0]=A[0];
     p=1;
    for (i=1; i<n; i++)
    {
        f=0;
        for (j=0; j<p; j++)
             if (A[i]==r[j]) { f=1; break;}
        if (f==0) r[p++]=A[i]; 
    }
    r=(int *) realloc(r,(p-1));
    return r;
}

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

  1. В данном коде представлен функция getUniq, которая принимает два аргумента: массив A и его размер n.
  2. Внутри функции объявлены следующие переменные:
    • r - указатель на динамически выделяемую память, которая будет использоваться для хранения уникальных элементов массива A.
    • i, j, f, p - вспомогательные переменные, используемые в процессе работы алгоритма.
  3. С помощью функции calloc выделяется память под массив r размером n. Первый элемент массива r инициализируется значением первого элемента массива A. Переменная p инициализируется значением 1.
  4. В цикле for перебираются все элементы массива A, начиная со второго.
  5. Для каждого элемента A[i] внутри цикла for инициализируется переменная f равной 0. Переменная f используется для проверки, был ли уже встречен данный элемент в массиве r.
  6. В цикле for перебираются все элементы массива r. Если текущий элемент массива r равен A[i], то переменная f устанавливается равной 1 и цикл прерывается с помощью оператора break.
  7. Если после прохода по всем элементам массива r переменная f осталась равной 0, то это означает, что элемент A[i] не был встречен ранее, и он добавляется в массив r с помощью функции realloc. Значение p увеличивается на 1.
  8. После прохода по всем элементам массива A возвращается указатель на массив r.
  9. Если в процессе работы алгоритма произошла ошибка, например, не хватило памяти, то возвращается значение NULL.

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


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

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

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