Code in C, der gleiche Zahlen auflistet?

1 Antwort

Fünf hat einen `count` von 2, in der Schleife

for (size_t k = 0; k < count - 1; k++) {
    dst[num_duplicates++] = src[i];
}

kopierst Du die Zahl aber jeweils nur `count - 1`, also im Falle der Fünf nur ein mal, statt `count` mal, also 2 mal in unserem Falle.

Sollte es das nicht gewesen sein, solltest Du nochmal spezifizieren, was genau deine Funktion überhaupt machen soll.

Woher ich das weiß:Studium / Ausbildung – B.Sc. Computer Science
m123a456 
Fragesteller
 03.05.2024, 18:22

Vielen Dank für deine mühe erst mal. Ich dachte auch, dass irgend wo beim counten liegt, aber wenn ich dich richtig verstanden habe meinst du ich soll von count nichts subtrahieren oder? Dann kommt bei mir aber bei der Ausgabe 6   {5,5,2,5,7,-7} raus. Die Aufgabe besteht darin, eine Funktion zu implementieren, die Werte aus einem Quell array in ein Ziel array kopiert. Dabei sollen nur Werte kopiert werden, die im Quell array mehr als einmal vorkommen. Das Ziel array hat die gleiche Länge wie das Quell array. Die Funktion gibt die Anzahl der kopierten relevanten Elemente zurück.

0
malte314  03.05.2024, 18:57
@m123a456

Ach ja, das hatte ich übersehen. Folgende Änderung habe ich getestet und sie produziert bei mir die Ausgabe `2      {5,5}`

if (count > 1) {
    for (size_t k = 0; k < count; k++) {     
        dst[num_duplicates++] = src[i];
    }
}
1
m123a456 
Fragesteller
 03.05.2024, 19:14
@malte314

Der Code macht mich fertig jetzt kommt wenn ich {1,1,1} eingebe fünf mal die 1 raus gibts irgend ne Möglichkeit dass beides funktioniert, weil wenn ich wieder -1 mache stimmt es ja dafür wieder

0
malte314  03.05.2024, 20:09
@m123a456

Das ist das erwartete Verhalten des Codes. Zuerst wird die erste 1 einmal gezählt, dann wird die zweite eins zwei mal gezählt, macht insgesamt fünf einsen. Du müsstest Dir merken, welche Zahlen zu schon gezählt hast.

0