Ich mache ein Programm, das ein Array von Zahlen einliest und dann nur die doppelten Nummern anzeigt. Mein Code verhält sich jedoch merkwürdig und gibt falsche Ausgaben aus (Ausgänge am Ende angehängt). Dies ist mein Code so weit:Anzeige doppelte Zahlen in einem Array von Zahlen
#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;
}
Mein Eingang:
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
Meine Ausgabe:
Das Duplikat 1 gefunden wurde. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 1 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden. Das Duplikat 0 wurde gefunden.
Wie Sie sehen können, zeigt die Ausgabe keine doppelten Nummern an. Ich denke, es hat etwas mit der Schleife zu tun, obwohl ich nicht weiß, wie man es debuggt. Kann mir jemand erklären, warum nicht der Code die doppelten Elemente im eingelesenen Zahlenfeld anzeigt? Jede Hilfe wird geschätzt. Vielen Dank!
Was passieren Sie zwei Parameter ('numberUsed' und' n') zu 'deleteRepeats'? Wäre 'numberUsed' nicht ausreichend? (Es würde sicherlich vermeiden, 20 Nachrichten für ein 5-Elemente-Array anzuzeigen). Beachten Sie auch, dass Ihre Funktion einen seltsamen Namen hat: Sie heißt 'deleteRepeats', löscht aber eigentlich nichts ... –