【发布时间】:2020-11-12 07:39:05
【问题描述】:
你好,所以这个问题的问题是你不应该使用另一个数组或函数,不要更改给定数组的元素或对它们进行排序,我们不知道元素的间隔 和旁注我不应该显示两次数字
例如,如果我们有 [10]={1,2,1,3,1,5,2,4,3,1} 它应该打印出来:
1 --- 4
2 --- 2
3 --- 2
4 --- 1
5 --- 1
我编写了一个代码,用于使用两个 for 循环查找重复数字,但我不知道如何阻止它重复相同的答案以及如何让它显示计数器
代码如下:
#include<iostream>
using namespace std;
int main()
{
int arr[5];
int size = sizeof(arr) / sizeof(arr[0]);
for (int i = 0; i < 5; i++)
{
cout << "Enter " << i << " number:";
cin >> arr[i];
}
{
for (int i = 0; i < size; i++)
for (int j = i + 1; j < size; j++)
if (arr[i] == arr[j])
cout << " Repeating elements are " << arr[i] << " " << endl;
}
return 0;
}
【问题讨论】:
-
using namespace std;是 C 中的语法错误:它不遵循语言规则。 -
这看起来像是来自某个竞赛/挑战/竞争性编码/黑客网站。是吗?如果您的目标是学习 C++,那么您将不会在那里学到任何东西。在几乎所有情况下,就像这个一样,正确的解决方案是基于数学或编程技巧。如果您不知道诀窍是什么并尝试编写蛮力方法,则程序运行缓慢并因此失败。如果你想学习 C++,你不会从毫无意义的在线竞赛网站 but only from a good C++ textbook 学到任何东西。
-
数组中存在的元素是否有任何范围?
-
另外,为什么要
int size = sizeof(arr) / sizeof(arr[0]);?你刚刚声明了一个大小为 5 的数组。所以我猜你已经知道它有多少个元素 -
你可能不被允许使用它,但
std::map毫不费力地解决了这样的问题。std::map<int, int> freqcount;然后freqcount[arr[i]]++;计数。要打印频率,请使用 range-based for loop 进行迭代。
标签: c++ arrays loops for-loop while-loop