Universität Ulm - Abteilung Angewandte Informationsverarbeitung
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!