7.6


delete(all) ist bei mir eigentlich fast nix anderes wie delete nur dass die schleife bei mir bis zum ende durchläuft und nicht beim ersten gefundenen breaked.


So habe ich das auch.

Gut, ich denke ich hab soweit alles implementiert; hat diesmal aber wieder erschreckend lange gedauert; nunja.

Hat jemand vielleicht eine gute Bsp. Ausgabe gebaut, um das Skript auf korrekte Funktion zu testen ? Gehört ja schliesslich nicht zur Aufgabe, und sollte daher unbedenklich sein. Anbei auch mal meine unübersichtliche, verwurschtelte Ausgabe, die mehr funktionell als hübsch ist.

http://home.arcor.de/vkb/javaprog/ausgabe.txt

Sollte einfach nach “concat” eingebaut werden können, und dann funktionieren. Im unteren Teil des Textes steht, was der bei mir damit ausspuckt.
Unter Umständen muss natürlich die Variable “kopf” angepasst werden.

Hoffentlich stimmts … <_<


wb.concat(wb2);
System.out.println("\n>>> Ausgabe mit concat:\n\n");
wb2.ausgabe();

So, einer von uns beiden hat da wohl einen Fehler im Denken:
Weil, so wie ich die Seiten davor verstanden habe, wird bei wb.concat(wb2); an das wb die Einträge von wb2 gehängt.
wb2 bleibt unverändert.
Demnach müsstest du zum einen wb.ausgabe(); schreiben, und zum andern deine Methode ändern, damits geht?
Oder bin ich grade aufm Holzweg?!


Nein, du hast vermutlich recht. Jetzt beim erneuten durchlesen der Aufgabenstellung bin ich auch deiner Ansicht.

Vielen Dank für die Hinweis.


Kein Problem, dann muss ich ja nix mehr machen :wink: Juhu… erste Aufgabe fertig :stuck_out_tongue:


Jetzt passt es … ich habe auch oben den Link aktualisiert. Damit wäre Blatt 7 abgehackt. Gut das ja 8 auch schon da ist =)


Also ich weiss net… irgendwie scheint mir das concat(…) viel trivialer als ihr es hier alle bisher so diskutiert habt.
Deswegen bin ich mir jetzt nicht so ganz sicher, ob ich das auch (der Vorgabe entsprechend) korrekt implementiert habe.

Ich habs jetzt so gemacht, dass ich das mit concat(…) uebergebene Woerterbuch einfach an den anfang des operierenden Woerterbuches direkt in der richtigen Reihenfolge vorangestellt habe. Das funzt einwandfrei und ist voellig zweckmaessig…
aber ihr habt hier alle so geschrieben, als muesste man das ans Ende des operierenden Woerterbuches anfuegen.
War das irgendwo gefordert?
Also meiner Meinung nach ist das egal, das resultat (operierendes Woerterbuch) muss doch laut Vorgabe am Ende eigentlich nur das uebergebene Woerterbuch auch enthalten… wie, wo und wodurch ist egal (wenn ich die Aufgabenstellung richtig verstanden habe) - lediglich die Reihenfolge der Woerter muss im neuen Woerterbuch wieder mit der im uebergebenen uebereinstimmen.
Liege ich da falsch, wenn ja: bitte um Korrektur! =) thx


Kommt ganz drauf an ob jetzt deine Liste rückwärts oder vorwärts verkettet ist. Meine ist so aufgebaut:
add(a),add(b),add(c),add(d)

start fängt bei mir mit null an.

  1. add(a)

a = start

  1. add(b) (im Folgenden so weiter)

a ← b = start

  1. a ← b ← c = start

  2. a ← b ← c ← d = start

(Rückwärtsverkettet bei mir)
so will ich jetz z.b. 1,2,3,a dranhängen, käme mit einfachem adden das zu stande:

  1. a ← b ← c ← d ← a ← 3 ← 2 ← 1 = start also reihenfolge vertauscht = schlecht deswegen hab ich vorher erst das 2te wörterbuch umgedreht zwsichen gespeichert und dann ans ende gefügt:

  2. a ← b ← c ← d ← 1 ← 2 ← 3 ← a = start

Meine Methoden find, delete usw. fangen immer bei start an zu suchen, den Aufbau fand ich am logischsten, da man dann wirklich von einer Variable vorgaenger sprechen kann und man nicht sein Hirn auf Nachfolger umstellen muss.


Also mein Wb gibt mir nach der concat zuerst die Wörter des 2. Wb´s und dann die Wörter des ersten Wb´s aus, wobei die Reihenfolge in sich stimmt und auch die Eintrage des 2. Wb´s die des ersten überdecken.

Ist das ok, oder ist es essentiell, dass zuerst die Wörter des ersten Wb´s ausgegeben werden?..

Gruß @ all vom Gelegenheitsposter…


hmm,

also dein 1. absatz sieht doch gut aus. wieso sollte erst das 1. wb ausgegeben werden?


hmm Also ich habs im Prinzip genau wie blook, allerdings ueberdecken die Elemente des zweiten wbs nicht die des ersten… war doch nicht verlangt oder?? Ich dachte eher, dass genau das nicht sein darf… oO

Bei mir schauts so aus:
create → leeres Woerterbuch
enter → baut neues Woerterbuch-Element, welches dem aktuellen Element entspricht und fuegt das praktisch als neuen Vorgaenger in die Liste ein, dann wird das aktuelle Element entsprechend veraendert (die Eintraege fuer englischesWort und dtWort ueberschrieben):

                neu = d
                /

a<–b<–c<-- <–d (wird zu e)

concat nimmt dann das uebergebene Woerterbuch (mit den Elementen 1<–2<–3<–4) und stellt es einfach so wie es ist VOR das erste Element (a):

1<–2<–3<–4 <–a<–b<–c<–d<–e

Also das gesamte Woerterbuch wird vor das erste Element eingefuegt, sodass quasi a nicht mehr ‘null’ als Vorgaenger hat, sondern eben 4 (was ja wiederum in sich schon 3 als Vorgaenger hat usw.).
Das geht wunderbar rekursiv.
=)
Was haltet ihr davon? Also ist das so zulaessig? Ich habe nix gefunden, was dem widerspricht.


in der aufgabenstellung steht “wobei die einträge des zweiten wörterbuchs die des ersten überdecken sollen”

versteh dein beispiel zwar nich ganz (vor allem das mit dem einfügen), aber den pfeilen nach gehst du ja vom zuerst eingefügten element zum zuletzt eingefügten… somit müsste deine find methode eigtl das zuerst eingefügte wort finden, was ja der aufgabenstellung nach falsch wäre.

edit: wobei, ne hab mich nur durch das einfügen verwirren lassen, aber das versteh ich wirklich nicht. wieso fügst du n neues wort nich einfach ans zuletzt eingefügte element an?


Doch natürlich sollen sie überdecken. Damit ist gemeint das gleiche einträge aus dem 2. wb die einträge bei find oder delete überdecken sollen also das zuerst die ausm 2ten gefunden werden.


Also sofern ich das alles richtig verstanden hab soll das so ablaufen:

a:A ← b:B ← c:C ← d:D = buch
e:E ← f:F ← a:X ← h:H = buch2

jetzt kommt buch.concat(buch2)
und raus kommt:
a:A ← b:B ← c:C ← d:D ← e:E ← f:F ← a:X ← h:H = buch

so, und wenn ich jetzt ein buch.find(a) mache sollte er X zurückgeben, da es der zuletzt eingefügte Eintrag von a ist! Das ist auch mit überdecken gemeint: a:A wird von a:X überdeckt, find(a) gibt X anstelle von A aus!


genau so seh ich das auch


Mal ne ganz blöde Frage… darf man bei den ganzen Aufgaben import verwenden (z.b. java.util.* oder so) oder nur wenns explizit gesagt wird (wie bei ButtonBox, javax.swing.*)?


also grundsätzlich is alles erlaubt was das standard JDK zu bieten hat, aber obs sinnvoll is die ganzen dinger einfach zu verwenden die java schon bereitstellt? ich glaub das verfehlt den zweck der übung java.util.* zu importen und dann extend dictionary dahinter zu schreiben :wink:


Ich: Heißt das “Benutzen von Fremdbibliotheken nicht erlaubt” auch, dass man keine anderen Interfaces implementieren darf?

Marc: “Fremd” heißt: nicht beim Sun-Java mit dabei

:wink:

edit: Ich war schneller als ich :frowning:


Jetzt mal ne grundsätzliche Frage (gut das JDK is erlaubt), aber darf ich dann grundsätzlich Aufgabenstellungen so bearbeiten, dass wenn ich meine ich brauch noch paar zusätzliche Methoden (die ich ja private machen könnt) mir die schreib und mir helfen die aufgabe zu lösen, hauptsache das interface is implementiert und mein zeug macht was es tun soll?


Hmm,

also ich hoffe, dass dem so ist. Ich hab den Suchbaum nicht ohne extra Methoden geschafft und hab trotz langen Überlegens keine Ahnung, wie es ohne die funktionieren soll.