C/C++ - Дан массив. Выберите из него все элементы, которые встречаются в массиве наибольшее

Ответить
Аватара пользователя
Frozen_Sky

C/C++ - Дан массив. Выберите из него все элементы, которые встречаются в массиве наибольшее

Сообщение Frozen_Sky »

Дан массив A(M). Выберите из него все элементы, которые встречаются в массиве наибольшее число раз. Код есть, поможете доработать? нужно чтобы элементы массива были в диапазоне ±1000. а M - в диапазоне 2, 20. И нужно распечатать индексы этих элементов в порядке возрастания. Заранее благодарен.



Код: Выделить всё

#include "stdafx.h"
#include "conio.h"
#include "iostream"
using namespace std;
int main()
{
    cout  << endl;
    unsigned int lenthOfArray=0;         //переменная длины массива
    cin >> lenthOfArray;                 //считываем длину массива
    //создаем Массив 
    int** Array = new int *[lenthOfArray];
    for (int i = 0; i < lenthOfArray; i++)
        Array[i] = new int [2];
    for(int i=0;i<lenthOfArray;i++)
    {
        Array[i][1]=0;                  //заполняем 0 количество повторов для каждого элемента
    }
    unsigned int max=0;
    cout <<   endl;
    for(int i=0;i<lenthOfArray;i++)
    {
        cin >> Array[i][0];            //считываем массив
        for(int j=0;j<i;j++)
        {
            if(Array[j][0]==Array[i][0])
                Array[i][1]++;         //увеличиваем на 1, если такой элемент уже встречался
        }
    }
    for(int i=0;i<lenthOfArray;i++)
    {
        if (Array[i][1]>max)
            {
                max=Array[i][1];       //ищем максимальное число повторов
            }
    }
    cout  << endl;
    for(int i=0;i<lenthOfArray;i++)
    {
        if (Array[i][1]==max)
            {
                cout << Array[i][0] << " ";   //выводим элементы с максимальным числом повторов
            }
    }
    getch();
    for (int i = 0; i < lenthOfArray; i++)
    {
        delete [] Array[i];
    }
    delete [] Array;
    return 0;
}
Ответить

Вернуться в «Программирование и базы данных»