В основном я пытаюсь найти режим в векторе, например, если вектор равен 1 1 1, он просто не возвращает никакого режима. также он должен уметь читать до двух возможных режимов, о которых сказал профессор, чтобы не беспокоиться о более чем двух режимах. Любые предложения были бы очень полезными. Также void calcMode является частью этого, он не позволит мне добавить его в код, который я не знаю, как его изменить.Попытка прочитать несколько режимов в вектор, а затем распечатать их C++
void calcMode(vector <double> const& vec)
{
int counter = 1;
int max = 0;
vector<double> mode;
for (int pass = 0; pass < vec.size() - 1; pass++)
{
if (vec[pass] == vec[pass + 1])
{
counter++;
// If they are the same number add it to the mode vector
if (counter > max)
{
mode.clear();
max = counter;
mode.push_back(vec[pass]);
}
// if it is greater clear the vector and assign it the new value
else if (counter == max)
{
mode.push_back(vec[pass]);
}
}
else
counter = 1; // reset counter.
}
// print out the freq and the mode(s)
cout << mode.size() << endl;
cout << "Mode: " << setw(25) << setprecision(3);
cout << setw(25) << setprecision(3);
if (vec.size() == 1)
{
cout << "Freq = " << counter << endl;
cout << vec[0] << endl;
}
else if (vec.size() == 2)
{
cout << "Freq = " << counter << endl;
cout << vec[0] << vec[1] << endl;
}
else
cout << "No mode" << endl;
}
Быстрый хак: 'станд :: Карта частота;' С этой маленькой красоты вы можете 'частота [VEC [индекс]] ++;', чтобы получить частоту подсчет всех элементов в «векторе». Затем просто переходите через 'freq', ища самые высокие (или два самых высоких) счета. Функция выполняется в 5-6 строках кода. –
user4581301
Помимо этого, выберите одну проблему и сосредоточьте внимание на этой проблеме. В противном случае вы собираете голоса, близкие голоса и фрагментированные ответы. Ничто из этого не стоит вашего времени. – user4581301
Спасибо за ответ, я пробовал свой метод, он считает самые высокие значения, но как я могу отображать самые высокие? Как если бы это было 20 20 10 11, частота была бы 2, но как распечатать 20? –