【发布时间】:2020-09-11 14:37:20
【问题描述】:
我刚开始接触 C++。提示是“显示给定数组中整数的频率”
以下是我写的代码:
#include <iostream>
#include <array>
using namespace std;
int main()
{
array <unsigned int,20> n = {1, 2, 5, 4, 3, 5, 2, 1, 3, 1, 4, 3, 3, 3, 2, 3, 3, 2, 2};
for(size_t i = 0; i < n[i]; i++)
{
int count = 0;
for(size_t j = 0; j < n.size(); j++)
{
if (n[i] == n[j])
{
count++;
}
}
cout<<"Frequency of "<<n[i]<<" is "<<count<<endl;
}
return 0;
}
但我的输出是:
1 的频率是 3
2 的频率是 5
5 的频率是 2
4的频率是2
为什么 3 的频率没有出现?我很确定这是一个愚蠢的错误,但我无法指出在哪里。
【问题讨论】:
-
i < n[i]的目的是什么?此外,使用std::map更容易解决此问题。 -
@cigien 是的,好的。这并没有真正达到目的。我该怎么办?还有,我还没学过地图。
-
请注意,在更正上述错误后,您将多次显示相同的信息。使用
std::map将简化这里的一切。排序也是一种选择。 -
@VasudhaJhingan 一种简单的可能性是首先扫描数组的最低和最高值,然后将它们用于主循环。