숫자 배열을 읽고 중복 숫자 만 표시하는 프로그램을 만들고 있습니다. 그러나, 내 코드가 이상하게 동작하고 잘못된 출력을 출력합니다 (끝에 첨부 된 출력).숫자 배열에 중복 숫자 표시
#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이 발견되었습니다. 중복 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이 발견되었습니다.
출력 에서처럼 중복 된 숫자가 표시되지 않습니다. 나는 그것을 디버깅하는 방법을 모르지만 그것은 루프와 관련이 있다고 생각한다. 누구나 내가 왜 숫자를 읽어들이는 배열에 중복 된 요소를 표시하는 코드가 아니라는 것을 깨달을 수 있습니까? 어떤 도움을 주셔서 감사합니다. 감사!
당신이 두 개의 매개 변수를 어떻게 통과 할 초기화되지 않은 메모리에 경계 나갈 수 있기 때문에 단지
(i,j) < numberUsed
를 사용은 위험하다 ('numberUsed'와'n') deleteRepeats''에? 'numberUsed'가 충분하지 않습니까? (5 요소 배열에 대해 20 개의 메시지를 표시하는 것은 분명히 피할 것입니다). 또한 당신의 함수는 이상한 이름을 가지고 있습니다 : 이름은'deleteRepeats'이지만 실제로 아무 것도 삭제하지 않습니다 ... –