Как найти одинаковые элементы в массиве? - C (СИ)
Формулировка задачи:
Всем привет! Ребят, подскажите пожалуйста, как можно выписать все повторяющиеся элементы из массива? Сколько способов попробовал и все работали не корректно, уже не знаю в чем проблема и в голову ничего адекватного не приходит. Дан массив, к примеру размером в 100 элементов, он заполняется с помощью рандома. Как из него извлечь одинаковые элементы и записать в динамический массив.
Допустим есть массив First и в нем есть следующие числа: 83 62 11 29 29 13 5 24 5 87 32 87
А результат динамического массива будет: 29 5 87
Как это реализовать? Помогите пожалуйста!
Решение задачи: «Как найти одинаковые элементы в массиве?»
textual
Листинг программы
#include <stdio.h> #include <stdlib.h> #include <time.h> #define N 100 #define A 0 #define B 99 #define D (B - A + 1) int main(void) { srand(time(NULL)); int arr[N]; int i; for (i = 0; i < N; ++i) { arr[i] = rand() % D + A; printf("%d%c", arr[i], i == N - 1 ? '\n' : ' '); } int cnt[D]; for (i = 0; i < D; ++i) { cnt[i] = 0; } for (i = 0; i < N; ++i) { cnt[arr[i] - A]++; } int first = 1; for (i = 0; i < N; ++i) { if (cnt[arr[i] - A] > 1) { printf(first ? "%d" : " %d", arr[i]); cnt[arr[i] - A] = 0; first = 0; } } putchar('\n'); return 0; }
Объяснение кода листинга программы
- Включаем необходимые заголовочные файлы
- Определяем параметры N, A, B, D
- Инициализируем генератор случайных чисел
- Создаем массив arr
- Заполняем массив arr случайными числами в диапазоне от A до B
- Выводим массив arr на экран
- Создаем массив cnt
- Инициализируем массив cnt нулями
- Проходим по массиву arr и увеличиваем соответствующий элемент массива cnt
- Создаем переменную first для отслеживания первой повторяющейся цифры
- Проходим по массиву arr повторно и выводим на экран повторяющиеся элементы
- Возвращаем 0, завершая работу программы
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д