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.

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 line
erzeugt:
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 <-> Frau
und verwenden Sie diesen Wert als Zeilenlänge (auch für die zentrierte Überschrift).

Abgabe und Versionsverwaltung

Details folgen noch an dieser Stelle.

Labels: , ,


Kommentare:

Kommentar veröffentlichen

Abonnieren Kommentare zum Post [Atom]





<< Startseite

This page is powered by Blogger. Isn't yours?

Abonnieren Posts [Atom]