Freitag, 7. September 2012
Aufgabe Verkette Listen - WH 2. Jg (POS1: 3BHIF)
Abgabename: 2012_3bhif_aufgabe1_Name_Vorname.tgz
Die folgende Aufgabe ermöglichen Ihnen einen Wiedereinstieg in das Programmieren mit Java. Das Rüstzeug zur Lösung sollten Sie in der zweiten Klasse bekommen haben.
Teilnehmerinnen und Teilnehmer melden sich zu einem Tanzkurs an. Der Tanzlehrer stellt die Paare zusammen, indem er immer eine Frau aus der Liste der Teilnehmerinnen und einen Mann aus der Liste der Teilnehmer nimmt (und streicht).
Eine Liste wird immer vollständig leer werden, die zweite kann noch TeilnehmerInnen enthalten.
Erstellen Sie ein Programm, welches zwei Dateien, in denen die Namen enthalten (einer pro Zeile) sind, liest und die Namen in die entsprechende Liste (alphabetisch sortiert) einfügt.
Die Zusammenstellung der Paare erfolgt dann so, dass jeweils ein (zufälliges) Element aus der ersten Liste und ein (zufälliges) Element aus der zweiten Liste entfernt. Im einfacheren Fall wird das Paar einfach ausgegeben und die beiden Listenelemente freigegeben (alle Referenzen auf die Listenelemente auf
Für Paare wird es eine eigene Datenstruktur (Klasse) geben:
Aufrufbeispiel bei zufälliger Auswahl der Tanzpartner:
Dabei enthält die Datei
Nach dem Einlesen der Dateien sollten zwei Listen, etwa wie im Bild skizziert, enstehen:
Die Zuordnung der Paare erzeugt eine Liste wie folgt. Eine Dame bleibt bei in der Liste
Schreiben Sie für die Ausgabe der Überschriften eine Methode, welche einen String als Parameter hat. Dieser String soll ausgegeben werden und darunter genauso viele = als der String lang ist.
Die folgende Aufgabe ermöglichen Ihnen einen Wiedereinstieg in das Programmieren mit Java. Das Rüstzeug zur Lösung sollten Sie in der zweiten Klasse bekommen haben.
Teilnehmerinnen und Teilnehmer melden sich zu einem Tanzkurs an. Der Tanzlehrer stellt die Paare zusammen, indem er immer eine Frau aus der Liste der Teilnehmerinnen und einen Mann aus der Liste der Teilnehmer nimmt (und streicht).
Eine Liste wird immer vollständig leer werden, die zweite kann noch TeilnehmerInnen enthalten.
Aufgabenstellung mit verketteten Listen
Erstellen Sie ein Programm, welches zwei Dateien, in denen die Namen enthalten (einer pro Zeile) sind, liest und die Namen in die entsprechende Liste (alphabetisch sortiert) einfügt.
Die Zusammenstellung der Paare erfolgt dann so, dass jeweils ein (zufälliges) Element aus der ersten Liste und ein (zufälliges) Element aus der zweiten Liste entfernt. Im einfacheren Fall wird das Paar einfach ausgegeben und die beiden Listenelemente freigegeben (alle Referenzen auf die Listenelemente auf
null
setzen, sodass der Garbage Collector den Speicher freigeben kann). In der fortgeschrittenen Lösung wird das Paar in eine spezielle Liste übernommen, deren Elemente jeweils Referenzen auf die beiden Teilnehmer enthält. Zum Schluss wird diese Liste ausgegeben.Mögliche Datenstrukturen
class Participant { Participant next; String name; }An geeigneter Stelle sollte es etwas wie folgt geben:
Participant women = null; Participant men = null;
Für Paare wird es eine eigene Datenstruktur (Klasse) geben:
class DanceCouple { DanceCouple next; Participant woman; Participant man; }An geeigneter Stelle sollte es etwas wie folgt geben:
DanceCouple danceCouples = null;
Gesamtprogramm und Tests
Aufrufbeispiel bei zufälliger Auswahl der Tanzpartner:
hp@l211 $ java DanceCourse male female 6 dance couples =============== Felix <-> Petra Franz <-> Sonja Harald <-> Elke Martin <-> Gabi Peter <-> Karin Reinhold <-> Brigitte leftover ======== Andrea
Dabei enthält die Datei
male
die Namen der Männer und female
die Namen der Frauen:male
Harald Franz Martin Felix Peter Reinhold
female
Gabi Elke Sonja Brigitte Karin Petra Andrea
Nach dem Einlesen der Dateien sollten zwei Listen, etwa wie im Bild skizziert, enstehen:
Die Zuordnung der Paare erzeugt eine Liste wie folgt. Eine Dame bleibt bei in der Liste
frauen
:Schreiben Sie für die Ausgabe der Überschriften eine Methode, welche einen String als Parameter hat. Dieser String soll ausgegeben werden und darunter genauso viele = als der String lang ist.
printHeader("dance class"); printHeader("list of couples"); printHeader("center", 20); // print "center" centered within a 20 char lineerzeugt:
dance class =========== list of couples =============== center ======Die Liste der Paare soll ebenfalls zentriert ausgegeben werden. Bestimmen Sie dazu die längste Zeile der Art
Mann <-> Frauund verwenden Sie diesen Wert als Zeilenlänge (auch für die zentrierte Überschrift).
Abgabe und Versionsverwaltung
Details folgen noch an dieser Stelle.Abonnieren Posts [Atom]
Kommentar veröffentlichen