我正在制作一个读取数字数组然后只显示重复数字的程序。但是,我的代码行为奇怪,并打印出不正确的输出(输出附在末尾)。这是到目前为止我的代码:在数组数组中显示重复的数字
#include <iostream>
using namespace std;
const int MAX_NUMBER_ELEMENTS = 20;
void fillArray (int a[], int size, int& numberUsed);
void deleteRepeats (const int a[], int numberUsed, int n);
int main()
{
int array [MAX_NUMBER_ELEMENTS], numberUsed;
cout << "This program reads in an array and scans for duplicate elements. " << endl;
cout << "Enter the array: \n";
fillArray(array, MAX_NUMBER_ELEMENTS, numberUsed);
deleteRepeats(array, numberUsed, 20);
}
void deleteRepeats (const int array[], int numberUsed, int n)
{
int i, j;
for (i = 0; i < n; i++)
{
for (j = i + 1; j < n; j++)
{
if (array[i] == array[j])
cout << "The duplicate " << array[i] << " was found. ";
}
}
}
void fillArray (int a[], int size, int& numberUsed)
{
cout << "Enter up to " << size << " nonnegative whole numbers.\n"
<< "Mark the end of thae list with a negative number.\n";
int next, index = 0;
cin >> next;
while ((next >= 0) && (index < size))
{
a[index] = next;
index++;
cin >> next;
}
numberUsed = index;
}
我输入:
This program reads in an array and scans for duplicate elements.
Enter the array:
Enter up to 20 nonnegative whole numbers.
Mark the end of the list with a negative number.
1 1 3 5 -1
我的输出:
重复的1被发现。找到了重复的1。找到了重复的1。找到了重复的1。找到了重复的1。找到了重复的1。找到了重复的1。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的1。找到了重复的1。找到了重复的1。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。找到了重复的0。
正如您所看到的,输出不显示重复的数字。我认为它与循环有关,尽管我不知道如何调试它。任何人都可以启发我为什么不是在读入数组数组中显示重复元素的代码?任何帮助表示赞赏。谢谢!
你怎么传递两个参数('numberUsed'和'N')为'deleteRepeats'? 'numberUsed'不会足够吗? (它肯定会避免为5个元素数组显示20条消息)。还要注意你的函数有一个奇怪的名字:它被命名为'deleteRepeats',但实际上并没有删除任何东西...... –