c++ - 查找数组 C++ 中出现次数最多的元素
问题描述
我需要找到数组 C++ 中出现次数最多的元素。我的代码总是返回 0。
p/s:此函数应分析数组以找到数组中出现次数最多的值。您不必考虑双模态的出现,因此第一个模态值足以满足此函数定义。
#include <iostream>
#include <ctime>
#include <random>
using namespace std;
int* generateArray(int size);
int findMode(int* arr, int size);
default_random_engine eng(static_cast<unsigned>(time(0)));
uniform_int_distribution<int>randNum(0,20);
int main()
{
// random 500 number for array coding
int SIZE = 20;
int* array = generateArray(SIZE); //output of 501 random element from 10-100
cout << endl;
findMode(array, SIZE);
delete[] array; //delete new int [size]
array = nullptr;
return 0;
}
int* generateArray(int size)
{
int* arr = new int[size];
cout << "Random number of 501 elements: " << endl;
cout << setw(6);
for (int i = 0; i < size; i++) //loop
{
arr[size] = randNum(eng);
cout << arr[size] << " ";
}
return arr; //return to array
}
int findMode(int* arr, int size)
{
int max_count = 0;
cout << "\nMost occurred number: ";
for (int i = 0; i < size; i++) {
int count = 1;
for (int j = i + 1; j < size; j++)
if (arr[i] == arr[j])
count++;
if (count > max_count)
max_count = count;
if (count == max_count)
cout << arr[i] << endl;
}
return 0;
}
解决方案
如下修改 generateArray() 及其调用,应该更改 for 循环。
void generateArray(int* arr, int size)
{
cout << "Random number of 501 elements: " << endl;
cout << setw(6);
for (int i = 0; i < size; i++) //loop
{
arr[i] = randNum(eng);
cout << arr[i] << " ";
}
}
为便于理解,修改了以上功能。arr[size] th 元素超出了数组的范围。您正在设置相同的值并尝试使用它。那应该是数组的索引。使用索引变量 - i 如上所示。
int main()
{
// random 500 number for array coding
int SIZE = 20;
int* arr = new int[SIZE];
generateArray(arr, SIZE); //output of 501 random element from 10-100
cout << endl;
findMode(arr, SIZE);
delete[] arr; //delete new int [size]
arr = nullptr;
return 0;
}
推荐阅读
- xamarin - 当应用程序在后台时保持任务工作
- google-chrome - 如何将文本发送到 Google Hangouts 窗口,然后 alt-tab 到另一个窗口并继续在 AutoHotKey 中将文本发送到最小化窗口?
- c++ - 在 C++ 中使用数字和条件填充向量
- google-apps-script - 谷歌工作表从另一个工作表 ID 创建 pdf
- python - 在 python 中制作基于文本的游戏时闪烁的命令提示符屏幕
- python-3.x - Parsing a non-Unicode string with Flask-RESTful
- android - 即使在后台,如何以最大音量播放通知声音?
- sed - How can I match an exact pattern with sed -n
- python - Django python View and Form - MultiValueDictKeyError at /result 'num1' - 为什么我的表单不会提交数据
- java - Getting JSON parsing error (MismatchedInputException) in Spring Rest Controller