Universität Ulm - Abteilung Angewandte Informationsverarbeitung

 


7. Übungsblatt zur Vorlesung Allgemeine Informatik III


Abgabetermin: Dienstag, 07.12.2003


Punkteverwaltung    (10 Punkte)

Um die Übungspunkte der Studenten zu verwalten wurde eine Teilnehmerliste aller Studenten, die an den Übungen teilnehmen, angelegt (Nach dem Doppelpunkt folgt die aktuelle Punktesumme, die vor dem ersten Übungsblatt 0 ist):

Anita Seiffert:0
Marcus Klimmer:0
Wim Abele:0
Ralf Abele:0
Ralf Martin Weder:0
Harald Sand:0
Marc Abele:0
Anne Marie Hafner:0

Jeder Tutor verwaltet nun die Ihm zugeteilten Studenten in einer eigenen Liste und weist den Studenten ihre Übungspunkte des aktuellen Übungsblattes zu:

MARCUS Klimmer:10
anita seifert:5
MARC Abele:3
Ralf MARTIN Weder:4
Martin Angerer:3


Ihre Aufgabe besteht nun darin, für beide Listen jeweils ein Array von Structures, wobei jede Struktur Name und Punkte enthält, anzulegen und die Daten einzulesen. Sie können davon ausgehen, daß die Namen eindeutig sind. Addieren Sie zu der Punktesumme eines jeden Studenten in der aktuellen Teilnehmerliste die Punkte aus dem aktuellen Übungsblatt des entsprechenden Studenten.


Auf falsch geschriebene Namen in der Tutorenliste soll mit einer Fehlermeldung (nach stderr) hingewiesen, das Programm aber nicht abgebrochen werden. Unterschiede bzgl. Klein- und Großschreibung sind keine Fehler, d.h. im obigen Beispiel soll z.B. für anita seifert eine Fehlermeldung ausgegeben werden, für MARC Abele hingegen nicht.


Die Ausgabe der Teilnehmerliste (auf stdout) soll sortiert nach dem Nachnamen und bei gleichem Nachnamen nach dem (evtl. zusammengesetzten) Vornamen erfolgen. Der Nachname ist der maximale Suffix vor dem Doppelpunkt, der kein Leerzeichen enthält. Vorname ist der ganze Rest davor (d.h. Namenszusätze wie ,,von``  zählen zum Vornamen). Implementieren Sie hierzu ein Sortierverfahren Ihrer Wahl als Funktion, das ein Array dieser Struktur als Parameter erhält. Diese soll intern eine Vergleichsfunktion enthalten, die 2 Namen bzgl. Nachname und Vorname unter Beachtung von Klein- und Großschreibung vergleicht (analog zu strcmp).

Ein Ausgabe könnte wie folgt aussehen:

Fehler: anita seifert ist nicht in Teilnehmerliste
Fehler: Martin Angerer ist nicht in Teilnehmerliste
Marc Abele:3
Ralf Abele:0
Wim Abele:0
Anne Marie Hafner:0
Marcus Klimmer:10
Harald Sand:0
Anita Seiffert:0
Ralf Martin Weder:4

Hinweis: Zum Einlesen aus Dateien kann die Funktion fopen verwendet werden. Diese liefert einen Stream, von dem analog zu stdin gelesen werden kann. Unter Beispiele finden Sie hierzu ein Beispielprogramm, wobei die Studentendaten in den Dateien studenten.txt und punkte.txt zu finden sind.



Viel Erfolg!



Hans Braxmeier