我正在製作一個讀取數字數組然後只顯示重複數字的程序。但是,我的代碼行爲奇怪,並打印出不正確的輸出(輸出附在末尾)。這是到目前爲止我的代碼:在數組數組中顯示重複的數字
#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',但實際上並沒有刪除任何東西...... –