Wo liegt der Fehler? Fehler in vier Zeilen…
-
@nachti74 sagte in Wo liegt der Fehler? Fehler in vier Zeilen…:
Moin zusammen,
hänge leider an dieser Altklausur Aufgabe und wäre froh, wenn mir jemand hilft. Wo sind die Fehler in den 4 Zeilen?
Klammer, Semikolon oder Syntax braucht man nicht suchen, da der Fehler auf semantischer Ebene ist.
Meine Vermutung wäre: Zeile: 1, 8, 15 & 16.void radixsort(int *a, int n, int d){
Was ist denn Deine Vermutung, was in Zeile 1 falsch ist?
-
@Belli würde sagen der Funktionsaufruf, da fehlt was.
-
@nachti74 sagte in Wo liegt der Fehler? Fehler in vier Zeilen…:
@Belli würde sagen der Funktionsaufruf, da fehlt was.
Der fehlt komplett, da du „nur“ die Definition der Funktion gezeigt hast.
-
@nachti74 sagte in Wo liegt der Fehler? Fehler in vier Zeilen…:
@Belli würde sagen der Funktionsaufruf, da fehlt was.
Ich sehe da (in Zeile 1) gar keinen Funktionsaufruf ...
-
@Belli also wäre da kein Fehler?
-
Wäre super, wenn mir jemand die Fehler benennen würde.
Schreibe gleich eine Klausur und wäre vorher super zu wissen, wo die Fehler hier wäre.
Lieben Dank
-
@Belli *(buckets[j].begin());
Sollte es nicht *(buckets.begin()) sein?
-
Was soll denn in der Funktionssignatur was sein? (Das sieht wieder sehr nach C im C++ Deckmantel aus...(abgesehen von vermutlich
std::list
)Ich würde vermuten:
int *a
Pointer auf das erste Element eine C Style int arrays.int n
vlt die Anzahl an Elementen in dem Array? Was ist dannint d
? Soll das die Basis sein? Dann wärelist<int> buckets[10];
falsch.@nachti74 sagte in Wo liegt der Fehler? Fehler in vier Zeilen…:
Wäre super, wenn mir jemand die Fehler benennen würde.
Schreibe gleich eine Klausur und wäre vorher super zu wissen, wo die Fehler hier wäre.
Lieben DankWie wäre es, wenn du dann erstmal schnell deinen ersten Beitrag editierst und Code Tags um deinen Code machst.
Wodran machst du fest, dass das falsch ist? (Was ist deine Testeingabe, was dein Erwartetes Ergebnis und was bekommst du raus).
Wäre schön, wenn du dein komplettes Beispiel posten könntest, dann könnte man das schnell ausprobieren.P.S. Die deutsche Wikipedia hat sogar einen ganz brauchbaren C++ Algo für Radix Sort (https://de.wikipedia.org/wiki/Radixsort)
-
@Schlangenmensch erstmal danke für den Beitrag, das hilft mir sehr. Beim radix Sort wird sonsotiert, dass wir z.B 7 Eimer (Buckets) haben und pro Eimer z.b die Zahlen (012),(203),(003),(074,(024),(017),(112).
Im Schritt 1 werden die Eimer nach der Reihenfolge der letzten Ziffern also Position 0 sortiert. Also:
(012),(112) - (203),(003)- (074),(024) - (017)Im schritt 2 werden die wieder ausgegeben:
(012)(112)(203)(003)(074)(024)(017)In Schritt 3 werden die Eimer nach der Reihenfolge der mittleren Ziffern also Position 1 sortiert:
Also:
(203)(003) - (012)(112)(017) - (024) - (074)Schritt 4 wird wieder ausgegeben:
(203)(003)(012)(112)(017)(024)(074)Schritt 5 werden die Eimer nach der Reihenfolge der ersten Ziffer also Position 2 sortiert. Also:
(003)(012)(017)(024)(074) - (112) - (203)Schritt 6 Endergbenis Ausgabeliste:
(003)(012)(017)(024)(073)(112)(203)
-
@Schlangenmensch habe noch folgendes gefunden:
sequence<Elem> ksort(sequence<Elem> s) {
foreach ( e ∈ s)
b[key(e)].pushBack(e);
Return concatenate (b); // Aneinanderreihung von b[0],..b[k-1]
-
radixSort (Sequence <Elem> s){
for(int i=0; i<d; i++)
kSort (s,i); // sortiere gemäß key(x)
// mit key(x) = (key(x)/k^i) mod k
-
@Schlangenmensch sagte in Wo liegt der Fehler? Fehler in vier Zeilen…:
Was ist dann
int d
? Soll das die Basis sein?Das sieht eher nach der Anzahl der Stellen aus.
(daraus wird ja mit pow die Wertigkeit der Stellen berechnet)
-
@DirkB glaube ich auch. Erkennst du sonst noch Fehler?
-
@nachti74 Schau dir mal die Schleifenbedingungen an.
-
@DirkB soweit alles korrekt oder nicht
-
Nicht.
Programmieren ist kein Ratespiel.
-
Jetzt ist deine Klausur zwar vorbei, aber wenn man schon den Code wo anders her klaut, kann man zumindest Zeile für Zeile prüfen, ob man wirklich das gleiche macht:
https://www.tutorialspoint.com/cplusplus-program-to-implement-radix-sort