Поиск в массиве одинаковых элементов - 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;
}

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

  1. Включаем заголовочный файл stdio.h для использования функций ввода-вывода
  2. Представлен самый простой вариант реализации функции поиска максимального количества повторяющихся элементов в массиве
  3. Функция max_rep принимает два указателя на начало и конец массива, которые итерируются по элементам массива
  4. Два вложенных цикла: внешний для прохода по всем элементам массива и внутренний для подсчета количества повторяющихся элементов
  5. Если внутренний цикл встречает элемент, равный текущему, то увеличивается счетчик повторяющихся элементов
  6. Если количество повторяющихся элементов больше, чем максимальное значение, то обновляется максимальное значение и индекс последнего найденного элемента
  7. Возвращаем индекс последнего найденного элемента
  8. В функции main создаем массив a и инициализируем его значениями
  9. Вызываем функцию max_rep, передавая указатель на начало и конец массива
  10. Если найдено повторяющееся значение, то выводим его на экран, иначе выводим сообщение, что массив уникален
  11. Возвращаем 0, чтобы указать, что программа успешно завершилась

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


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

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

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