C/C++
Найти наиболее часто встречаемое число в массиве на C++, используя только функции
Даны значения n элементов целочисленного массива. Найти наиболее часто встречающееся число; если таковых будет несколько, то указать их все.
#include
#include
#include
#include
#include
#include
using namespace std;
template
class Output {
public:
Output(Type value) : value(value) {}
private:
Type value;
friend ostream& operator
Можно использовать следующий алгоритм:
Объявить массив целых чисел, ввести размер массива и значения элементов массива.
Объявить переменную, которая будет хранить частоту встречаемости элементов.
Объявить цикл, который будет итерироваться по всем элементам массива.
Внутри цикла проверить, существует ли элемент с таким же значением в массиве. Если существует, то увеличить значение частоты встречаемости этого элемента.
После завершения цикла найти элементы с максимальной частотой встречаемости.
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
// Объявляем массив целых чисел и переменную для хранения размера массива
int a[100], n;
Copy code
// Вводим размер массива
cout << "Vvedite kol-vo elementov: ";
cin >> n;
// Вводим элементы массива
cout << "Vvedite elementy massiva: ";
for (int i = 0; i < n; i++)
cin >> a[i];
// Объявляем массив, который будет хранить частоту встречаемости элементов
int freq[100] = { 0 };
// Обходим все элементы массива
for (int i = 0; i < n; i++)
{
// Проверяем, существует ли элемент с таким же значением в массиве
int count = count(a, a + n, a[i]);
// Если элемент существует, то увеличиваем значение частоты встречаемости этого элемента
freq[i] = count;
}
// Находим максимальное значение частоты встречаемости элементов
int max_freq = *max_element(freq, freq + n);
// Выводим элементы с максимальной частотой встречаемости
cout << "Naibolee chasto vstrechayuschiesya chisla: ";
for (int i = 0; i < n; i++)
{
if (freq[i] == max_freq)
cout << a[i] << " ";
}
return 0;
}
Объявить массив целых чисел, ввести размер массива и значения элементов массива.
Объявить переменную, которая будет хранить частоту встречаемости элементов.
Объявить цикл, который будет итерироваться по всем элементам массива.
Внутри цикла проверить, существует ли элемент с таким же значением в массиве. Если существует, то увеличить значение частоты встречаемости этого элемента.
После завершения цикла найти элементы с максимальной частотой встречаемости.
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
// Объявляем массив целых чисел и переменную для хранения размера массива
int a[100], n;
Copy code
// Вводим размер массива
cout << "Vvedite kol-vo elementov: ";
cin >> n;
// Вводим элементы массива
cout << "Vvedite elementy massiva: ";
for (int i = 0; i < n; i++)
cin >> a[i];
// Объявляем массив, который будет хранить частоту встречаемости элементов
int freq[100] = { 0 };
// Обходим все элементы массива
for (int i = 0; i < n; i++)
{
// Проверяем, существует ли элемент с таким же значением в массиве
int count = count(a, a + n, a[i]);
// Если элемент существует, то увеличиваем значение частоты встречаемости этого элемента
freq[i] = count;
}
// Находим максимальное значение частоты встречаемости элементов
int max_freq = *max_element(freq, freq + n);
// Выводим элементы с максимальной частотой встречаемости
cout << "Naibolee chasto vstrechayuschiesya chisla: ";
for (int i = 0; i < n; i++)
{
if (freq[i] == max_freq)
cout << a[i] << " ";
}
return 0;
}
#include <iostream>
#include <unordered_map>
using namespace std;
int main()
{
// Читаем размер массива
int n;
cin >> n;
// Создаем контейнер для хранения пар "ключ-значение"
unordered_map<int, int> counts;
// Читаем массив и подсчитываем количество вхождений элементов
for (int i = 0; i < n; i++) {
int x;
cin >> x;
counts[x]++;
}
// Ищем элемент с максимальным количеством вхождений
int max_count = 0;
for (const auto& p : counts) {
if (p.second > max_count) {
max_count = p.second;
}
}
// Выводим элементы с максимальным количеством вхождений
for (const auto& p : counts) {
if (p.second == max_count) {
cout << p.first << " ";
}
}
return 0;
}
Я не уверен что это то что нужно
#include <unordered_map>
using namespace std;
int main()
{
// Читаем размер массива
int n;
cin >> n;
// Создаем контейнер для хранения пар "ключ-значение"
unordered_map<int, int> counts;
// Читаем массив и подсчитываем количество вхождений элементов
for (int i = 0; i < n; i++) {
int x;
cin >> x;
counts[x]++;
}
// Ищем элемент с максимальным количеством вхождений
int max_count = 0;
for (const auto& p : counts) {
if (p.second > max_count) {
max_count = p.second;
}
}
// Выводим элементы с максимальным количеством вхождений
for (const auto& p : counts) {
if (p.second == max_count) {
cout << p.first << " ";
}
}
return 0;
}
Я не уверен что это то что нужно
Похожие вопросы
- Помогите пожалуйста - создать 4 массива на c++
- Помогите, пожалуйста решить на C++, используя многомерные статические массивы
- Задан одномерный массив целых чисел создать код на C++
- Написать массив на C(не C++) пожалуйста!!! простым языком с пояснениями
- Нужно решить задачу с массивами на C++
- Как проверить одинаковые числа в массиве без повторений на С++
- Помогите добавить ввод чисел в массив матрицы на языке Си
- C++. Как найти 3 самых больших числа из ряда чисел введенных пользователем?
- Сложности с массивами структур c++
- Код должен находить наименьшее число в массиве, но это всегда почему то 0. Где ошибка?
// Обходим все элементы массива
for (int i = 0; i < n; i++)
{
// Проверяем, существует ли элемент с таким же значением в массиве
int count = count(a, a + n, a[i]);
// Если элемент существует, то увеличиваем значение частоты встречаемости этого элемента
freq[i] = count;
}