Das ist mein aktueller Code:
#include <stdio.h>
#include <stdlib.h>
size_t copy_duplicates(int dst[], const int src[], size_t len)
{
size_t num_duplicates = 0; // Zählvariable für Duplikate
for (size_t i = 0; i < len - 1; i++) {
size_t count = 1; // Anzahl der Vorkommen des aktuellen Elements
for (size_t j = i + 1; j < len; j++) {
if (src[i] == src[j]) {
count++; // Zähle die Anzahl der Vorkommen
}
}
// Kopiere das aktuelle Element entsprechend seiner Anzahl der Vorkommen
for (size_t k = 0; k < count - 1; k++) {
dst[num_duplicates++] = src[i];
}
}
return num_duplicates; // Gib die Anzahl der Duplikate zurück
}
int main()
{
const int src[] = { 5, 2, 5, 7, -7, 3 };
int dst[50];
size_t num_duplicates = copy_duplicates(dst, src, sizeof(src) / sizeof(src[0]));
printf("%zu\t", num_duplicates);
printf("{");
for (size_t i = 0; i < num_duplicates; i++) {
printf("%d%s", dst[i], (i < num_duplicates - 1) ? "," : "");
}
printf("}\n");
return EXIT_SUCCESS;
}
Er gibt mir aber erst wenn ich mehr als zwei gleiche Zahlen eingebe, die richtige Ausgabe aus.
Ich möchte, dass ich beispielsweise bei
const int src[] = { 5, 2, 5, 7, -7, 3 };
in der Ausgabe 2 für die Anzahl gleicher Zahlen und dann { 5, 5 } für die Zahlen die mehrmals vorkommen. Bis jetzt kommt bei mir immer nur { 5 } in der Ausgabe heraus.