В массиве найти наиболее часто встречающиеся числа - C (СИ)

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

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

В массиве целых чисел с количеством элементов N(N вводится с клавиатуры) найти наиболее часто встречающиеся числа. если таких чисел несколько,то определить наименьшее из них. Помогите плиз)

Решение задачи: «В массиве найти наиболее часто встречающиеся числа»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
 
int main()
{
    int N = 0, CurrentCounter = 0, BiggestCounter = 0, FrequentEl = 0;
//CurrentCounter - текущее число повторений
//BiggestCounter - наибольшее число повторений
//FrequentEl - наиболее часто встречающийся элемент
    int * Array = NULL;
    printf("Input N = ");
    scanf("%d", &N);
    Array = (int*)malloc(N*sizeof(int));
    if(Array == NULL)
    {
        return 1;
    }
//Забиваем массив псевдослучайными числами
    for(int i = 0; i < N; i++)
    {
        //Array[i] = rand()%N;
        printf("Array[%d] = ", i);
        scanf("%d", &Array[i]);
    }
    printf("\n");
//Смысл такой: берём элемент, сравниваем его со всеми последующими,
//если равен, то увеличиваем текущий счётчик.
//Далее сравниваем текущий счётчик с наибольшим, если он больше
//наибольшего, то делаем его наибольшим, а элемент запоминаем.
//Условие "строго больше" делает так, что выбирается наименьший
//элемент, если несколько элементов встречаются одинаковое количество раз.
    for(int i = 0; i < N; i++)
    {
        for(int j = i; j < N; j++)
        {
            if(Array[i] == Array[j])
            {
                 CurrentCounter++;
            }
        }
        if(CurrentCounter > BiggestCounter)
        {
             BiggestCounter = CurrentCounter;
             FrequentEl = Array[i];
        }
        CurrentCounter = 0;
    }
    printf("Frequency = %d\n", BiggestCounter);
    printf("Element = %d\n", FrequentEl);
    free(Array);
    Array = NULL;
    printf("Any key to continue, please\n");
    scanf("%d", &N);
    return 0;
}

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

В данном коде реализована функция, которая находит наиболее часто встречающееся число в массиве. Список действий программы:

  1. Ввод числа N, которое определяет размер массива.
  2. Выделение памяти под массив с помощью malloc.
  3. Заполнение массива числами.
  4. Поиск наиболее часто встречающегося числа.
  5. Вывод результата на экран.
  6. Освобождение памяти.
  7. Ввод числа N для продолжения работы программы.
  8. Вывод сообщения об успешном завершении работы программы. Примечание: в коде есть неиспользуемый комментарий, который говорит о том, что при желании можно добавить проверку на ошибку при выделении памяти под массив.

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


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

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

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