В массиве найти наиболее часто встречающиеся числа - 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; }
Объяснение кода листинга программы
В данном коде реализована функция, которая находит наиболее часто встречающееся число в массиве. Список действий программы:
- Ввод числа N, которое определяет размер массива.
- Выделение памяти под массив с помощью malloc.
- Заполнение массива числами.
- Поиск наиболее часто встречающегося числа.
- Вывод результата на экран.
- Освобождение памяти.
- Ввод числа N для продолжения работы программы.
- Вывод сообщения об успешном завершении работы программы. Примечание: в коде есть неиспользуемый комментарий, который говорит о том, что при желании можно добавить проверку на ошибку при выделении памяти под массив.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д