Поиск в массиве одинаковых элементов - C (СИ)
Формулировка задачи:
Необходимо найти в массиве одинаковые элементы и вывести значение одного из элементов. Если в массиве есть несколько групп одинаковых элементов, то необходимо вывести значение элемента, который повторяется чаще. Спасибо!
Решение задачи: «Поиск в массиве одинаковых элементов»
textual
Листинг программы
#include <stdio.h> /*самый простой вариант, без сортировки и различных структур-данных хэш-таблиц, rb-tree... */ int max_rep(const int* f, const int* l){ int n, m, i; const int* p, *t = f; for(i = -1, m = 1; f != l; ++f){ n = 1; for(p = f + 1; p != l; ++p){ if(*p == *f) ++n; } if(n > m){ m = n; i = (int)(f - t); } } return i; } int main(void) { int a[] = { 1, 3, 4, 2, 0, 2, 5, 6, 1, 7, 3 }; size_t n = sizeof(a)/sizeof(a[0]); int i = max_rep(a, a + n); if(i != -1) printf("value: %d\n", a[i]); else puts("unique array."); return 0; }
Объяснение кода листинга программы
- Включаем заголовочный файл stdio.h для использования функций ввода-вывода
- Представлен самый простой вариант реализации функции поиска максимального количества повторяющихся элементов в массиве
- Функция max_rep принимает два указателя на начало и конец массива, которые итерируются по элементам массива
- Два вложенных цикла: внешний для прохода по всем элементам массива и внутренний для подсчета количества повторяющихся элементов
- Если внутренний цикл встречает элемент, равный текущему, то увеличивается счетчик повторяющихся элементов
- Если количество повторяющихся элементов больше, чем максимальное значение, то обновляется максимальное значение и индекс последнего найденного элемента
- Возвращаем индекс последнего найденного элемента
- В функции main создаем массив a и инициализируем его значениями
- Вызываем функцию max_rep, передавая указатель на начало и конец массива
- Если найдено повторяющееся значение, то выводим его на экран, иначе выводим сообщение, что массив уникален
- Возвращаем 0, чтобы указать, что программа успешно завершилась
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д