7.6

Disclaimer: Dieser Thread wurde aus dem alten Forum importiert. Daher werden eventuell nicht alle Formatierungen richtig angezeigt. Der ursprüngliche Thread beginnt im zweiten Post dieses Threads.

7.6
Hat jemand schon die concat-Funktion? Die will als Parameter ja ein WoerterbuchInterface, aber im WoerterbuchInterface gibts keine Methode um auf die Einträge zuzugreifen. Somit kann ich auch dem einen Wörterbuch keine Einträge vom andern Wörterbuch anhängen…


hehe,

dieselbe frage hab ich hassandor schon gestellt, weil ich da auch nich weiter wusste…

die einfache loesung: das woerterbuchinterface als woerterbuch casten dann kannst du auch auf die private vars zugreifen \o/

  • tobi

okay, merci


soll die methode enter(englwort, dtwort) wirklich ein element ans ende anfügen? oder direkt als erstes… ich nehme mal an der verweis vom kopf is das erst element, richtig?


so wie ich das verstanden habe zeigt ein eintrag immer auf seinen vorgaenger. also der erste eintrag auf null und der verweis vom kopf (?) aufs zuletzt eingefügte element


jo, so hab ich das auch verstanden und umgesetzt


ja die bezeichnungen ende und kopf usw… verwirren mich gelegentlich, dankschee


Wie sieht das mit concat() und der Reihenfolge aus ?
Der Parameter entspricht ja dem zweiten Wörterbuch, dessen Einträge in der Liste weiter oben als die bisherigen rein sollen ?

this: { Kopf → 3 → 2 → 1 → null }
w2: { Kopf → 13 → 12 → 11 → null }

Dann soll am Ende nach dem Zusammenfügen rauskommen:
{ Kopf → 13 → 12 → 11 → 3 → 2 → 1 → null }
damit die von w2 die aus dem alten Wörtebuch ersetzen, richtig ?


theHacker: Jo.
Kleiner Tipp: Alle einzelnen Wörter vom hinzufügenden Wörterbuch in das alte Wörterbuch mit enter einfügen ist die (laut Tutor) bessere Lösung als nur Zeiger umzubiegen.


wobeis dafür eine geschickte und eine weniger geschickte aber genauso funktionierende variante gibt…


Naja, das übergebene Wörterbuch sollte wohl nicht verändert werden und deshalb ist das „Umbiegen von Zeigern“ etwas ungünstig.


Ist das nicht ein “bisschen” zu aufwändig, wenn man nicht die Reihenfolge der Wörter umdrehen will?

Man müsste ja erst den ersten Eintrag des übergebenen Wörtersbuchs holen (einmal durch die Liste) und dann das Wörterbuch wieder bis zum letzten Eintrag durchgehen (nochmal durch die Liste). Edit: Vielleicht steh ich gerade ein bisschen auf’m Schlauch, aber geht das überhaupt? Vorwärts durchs Wörterbuch? Ohne Zwischenspeicher oder so?

Gibts denn die Vorgabe, das übergebene Wörterbuch nicht zu verändern?


Dass das übergebene Wörterbuch nicht verändert wird sehe ich mal als selbstverständlich an.

Edit: PS: Ich glaube auch nicht, dass du eine Veränderung in den Axiomen spezifiziert hast, oder? :wink:


[quote=Velines]Kleiner Tipp: Alle einzelnen Wörter vom hinzufügenden Wörterbuch in das alte Wörterbuch mit enter einfügen ist die (laut Tutor) bessere Lösung als nur Zeiger umzubiegen.[/quote]Zeiger umbiegen würde mir ja das Wörterbuch, das ich als Parameter übergeb, zerstören. Das kommt eh ned in Frage.

Meine Überlegung war das eben mit der Reihenfolge.
Wenn ich nur sturr mit ner Schleife alle Wörter aus w2 einfüge, dreh ich ja die Reihenfolge in w2 um, was dann in
{ Kopf → 11 → 12 → 13 → 3 → 2 → 1 → null } statt
{ Kopf → 13 → 12 → 11 → 3 → 2 → 1 → null } resultiert.
Wäre 13 ein alternativer (neuerer) Eintrag von 11, würde nach dem concat() die 11 als neueste Übersetzung angesehen werden.

Und da ich nur ne einfache Liste ohne Rückwärts-Referenz hab, muss ich da also doch noch was basteln, um die Wörter trotzdem rückwärts einzufügen. Ich glaub, ich hab da schon ne Idee, wie ich das einfach, aber dennoch effizient lösen kann…


hmm, ich hab einfach die reverse-methode vom script übernommen, hoffentlich ist das kein plagiarismus :confused:


Stichwort: Rekursion (die geschickte Variante), man kann mehrere Methoden schachteln von concat aufmachen lassen und wenn die letzte geöffnet ist wird beim zurückgehen und schließen die Wörter gleich umgedreht angehängt (wie mans in den Axiomen macht).

2te Variante: In der concat Methode ein Buffer-Wörterbuch erstellen da die Wörter reinfüllen und dann daraus ans wörterbuch hängen. 2mal umdrehen hebt sich auf :wink:


versteh dein quote irgendwie nicht wirklich… inwiefern war das ne “antwort” auf meinen post?


Die Aufgaben sind lösbar im Bereich der gegebenen Methoden, solltest es vermeiden dir Methode die zur Lösung beitragen zu schreiben. Was nützlich sein kann ne print() methode oder so um sichs zu visualisieren, aber du solltest für die Lösung der Aufgabe am Interface bleiben.

Und die Antwort solltee ausdrücken wie mans machen könnte.


Wie sieht das eigentlich bei der delete(all) Methode aus, muss ich da einen Schleppzeiger benutzen (bin da gerade im Script drauf gestoßen) oder kann ich meine Lösung ohne extra Zeiger auch abgeben ohne Punktabzug fürchten zu müssen?
Und gegen übergebenes Wörterbuch clonen und dann Zeiger umbiegen bei concat dürfte doch auch kein Axiom sprechen?