Klausur vom 05.08.2010 - Aufgabe 8

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.

Klausur vom 05.08.2010 - Aufgabe 8
Hallo Leute,
hat jemand (warhscheinliche) Lösungen für die Teilaufgabe c) mit der dynamischen Programmierung?
Wäre super!


Sorry für Doppelpost, aber habe gerade die Lösung für die Aufgabe 3) Schreibtischlauf entdeckt…
: d a a
: [d, d, d, d] [a, b, c, d]
: [a, d, c, d] [a, b, a, d]

stimmt das wirklich?
Wieso ist das denn bei 1: d a a? und nicht a a a?
Es wird doch in der Reihenfolge a, dann b, dann c, dann d eingefügt?! Und add fügt es ja immer hinten ein, also bleibt a doch an erster Stelle?


Hab jetzt nur die erste Ausgabe angeschaut, die stimmt: d a a, weil l1 = [d d d d], in dem Array stehen nur Referenzen die alle aufs selbe Objekt zeigen. l2 und l3 hingegen werden kopiert, d.h. hier steht jeweils [a b c d].

Btw.: Du könntest das Programm auch einfach mal laufenlassen.


Ich machs dir noch leichter:
http://hpaste.org/64040


Danke^^
Ach immer dieser Referenz und Typenmist, der verleitet immer zu Fehlern…


also mein problem besteht bei der Aufgabe überhaupt irgendwas verwertbares zufinden.

Wie kommt man denn auf die erste Ausgabe?


Naja die erste Schleife geht ja von “a” bis “d” und setzt jeweils das char vom Objekt mc je nach Schleifendurchlauf und fügt es dann in die Liste l1 hinein. Da man aber jedes mal den Wert vom gleichen Objekt mc verändert und somit die “Pfeile” bzw Referenzen immer auf mc zeigen, sind es die gleichen Werte in der 1. Liste… Also nach dem ersten Durchlauf steht a in der l1, im 2. steht b b (weil das ursprüngliche a aufs gleiche Objekt zeigt, das jetzt b ist…), im dritten “c” und im vierten “d”! So ergibt sich, dass l1 “d d d d” beinhaltet. Also beim ersten Systemoutprint kommt “d” “a” “a” raus. Die beiden a sind a, weil die Objekte in den Listen l2 und l3 nicht auf das mc zeigen, sondern Kopien sind und sich somit das “a” an Stelle [0] nicht ändert… Recht tricky…


aber wie kann ne schleife von a bis d laufen?

Also bei zahlen kann man ja weiter zählen, aber bei Strings?


Das sind keine Strings, sondern char[acters]. Auf denen kann man normal “rechnen” (Reihenfolge kannst du für “normale” Buchstaben z.B. in der ASCII-Tabelle nachsehen)