Дописать или подправить алгоритм вывода неповторяющихся элементов в массиве - C (СИ)

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

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

#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define n 7
void main()
{
randomize();
clrscr();
int a[n];
int b[n];
int c,k;
printf ("\n ishodnyi ¬*ббЁў:");
for (int i=0; i<n;i++)
{
a[i]=random (10);
printf ("%5i",a[i]);
}
              // zapisat te kotorye vstrechautca 1 raz
for (i=0; i<n; i++)
{
k=a[i];
c=0;
 for (int j=0; j<n;j++)
 {
  if (k==a[j])
   c++;
   //вот тут вроде должны записываться  те элементы которые не повторяются в массиве.
}
}
printf ("\n");
printf (" izmenenyi massiv");
for (i=0; i<n;i++)
printf ("%5i",b[i]);
 
getch();
}
к примеру есть массив 3 0 9 8 7 9 должен записаться вот так 3 0 8 7

Решение задачи: «Дописать или подправить алгоритм вывода неповторяющихся элементов в массиве»

textual
Листинг программы
#include <stdio.h>
 
int * find(const int * array, const size_t count, const int value) {
    return ( ! count ) ? NULL : ( *array == value ) ? (int*)array : find(array + 1, count - 1, value);
}
 
#define COUNT (10)
 
int main(void) {
    int arr[COUNT] = { 2, 3, 4, 3, 7, 5, 6 , 5, 7, 8 }, i;
    
    for ( i = 0; i < COUNT; ++i )
        if ( find(arr, COUNT, arr[i]) == arr + i && find(arr + i + 1, COUNT - i - 1, arr[i]) == NULL )
            printf("%d ", arr[i]);
    printf("\n");
    
    return 0;
}

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

  1. Подключение стандартной библиотеки ввода-вывода.
  2. Определение функции find, которая принимает три аргумента: указатель на начало массива, размер массива и значение, которое нужно найти.
  3. Внутри функции find используется тернарный оператор для определения, является ли текущий элемент искомым значением. Если это так, то возвращается указатель на текущий элемент. Если нет, то рекурсивно вызывается функция find для следующего элемента (передается указатель на следующий элемент и размер массива уменьшается на 1). Если массив пустой, то возвращается NULL.
  4. В функции main определен массив arr с десятью элементами.
  5. Затем в цикле перебираются все элементы массива.
  6. Если текущий элемент не найден в оставшейся части массива (проверяется с помощью функции find), то он выводится на экран.
  7. В конце программы возвращается 0, что означает успешное завершение работы программы.

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

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