Определить имеются ли в массиве одинаковые элементы. Вывести значения наиболее часто встречающегося элемента?

Для определения, имеются ли в массиве одинаковые элементы, можно пройти по всем элементам массива и сравнивать их с остальными элементами. Нахождение наиболее часто встречающегося элемента можно реализовать с помощью счетчика и хэш-таблицы.

Вот пример решения задачи на языке программирования C++:

#include <iostream>
#include <unordered_map>
#include <vector>

bool hasDuplicates(const std::vector<int>& arr) {
    std::unordered_map<int, int> counts;
    for (int num : arr) {
        // Заполняем хэш-таблицу, считая количество каждого элемента массива
        counts[num]++;
        // Если нашлось более одного повторяющегося элемента, возвращаем true 
        if (counts[num] > 1) {
            return true;
        }
    }
    return false;
}

int mostFrequentElement(const std::vector<int>& arr) {
    std::unordered_map<int, int> counts;
    int maxCount = 0;
    int mostFrequent = arr[0];

    for (int num : arr) {
        // Заполняем хэш-таблицу, считая количество каждого элемента массива
        counts[num]++;
        // Обновляем значение наиболее часто встречающегося элемента, если нашли элемент с большим количеством встреч
        if (counts[num] > maxCount) {
            maxCount = counts[num];
            mostFrequent = num;
        }
    }
    return mostFrequent;
}

int main() {
    std::vector<int> arr = {1, 2, 3, 4, 5, 2, 3};
    
    if (hasDuplicates(arr)) {
        std::cout << "Массив содержит повторяющиеся элементыn";
    } else {
        std::cout << "Массив не содержит повторяющиеся элементыn";
    }

    int mostFrequent = mostFrequentElement(arr);
    std::cout << "Наиболее часто встречающийся элемент: " << mostFrequent << std::endl;
    
    return 0;
}

В этом коде мы используем хэш-таблицу (unordered_map) для хранения количества встреч каждого числа в массиве.

Функция hasDuplicates проходит по всем элементам массива и заполняет хэш-таблицу, увеличивая соответствующий счетчик. Если находится элемент, для которого значение счетчика больше 1, значит, в массиве есть повторяющиеся элементы, и функция возвращает true.

Функция mostFrequentElement также заполняет хэш-таблицу, считая количество встреч каждого числа, но вместо проверки на наличие повторяющихся элементов, она ищет наиболее часто встречающийся элемент, обновляя значение переменных maxCount и mostFrequent при необходимости. В конце функция возвращает наиболее часто встречающийся элемент.

После выполнения этих функций мы выводим информацию о наличии повторяющихся элементов в массиве и выводим наиболее часто встречающийся элемент.

В приведенном примере входной массив [1, 2, 3, 4, 5, 2, 3] содержит повторяющиеся элементы (числа 2 и 3), поэтому функция hasDuplicates вернет true. Наиболее часто встречающийся элемент - 2, поэтому функция mostFrequentElement вернет 2.