Prof. Franz Schweiggert Abteilung Angewandte
Informationsverarbeitung 6. Dezember 2002
Christian Ehrhardt Blatt 7
Allgemeine Informatik 3 (WS 2002/2003)
Abgabetermin 8.12.2002
Ein Korrekteur für eine Vorlesung hat einige Übungsblätter korrigiert
und die Ergebnisse in einer Datei vermerkt, die so aussieht:
Hans Wurst:10
Hans Meiser:9
Anna Meiser:7
Lisa Maria Pressley:8
Allgemein heißt das also, daß in jeder Zeile der Datei der Name eines
Übungsteilnehmers und die Zahl der vergebenen Punkte für diese Person
steht (getrennt durch einen Doppelpunkt). Die Datei kann beliebig viele
solche Zeilen haben.
Der Übungsleiter muß natürlich für viel mehr Studenten die Punkte
verwalten, deshalb hat er seinen Korrekteuren eine Liste mit allen
eingetragenen Übungsteilnehmern überlassen, z.B:
Vater Abraham
Anna Meiser
Hans Meiser
Otto
Lee Harvey Oswald
Lisa Maria Pressley
Orang Utan
Hans Wurst
In dieser Liste steht
jeweils ein einzelner Name pro Zeile und die Korrekteure sollen ihrem
Übungsleiter diese Liste zurückschicken. Genau bei den Studenten,
die der Korrekteur in dieser Woche selbst korrigiert hat, soll hinter
dem Namen noch ein Doppelpunkt und die Zahl der vergebenen Punkte
stehen. Die fertige Liste sollte also so aussehen:
Vater Abraham
Anna Meiser:7
Hans Meiser:9
Otto
Lee Harvey Oswald
Lisa Maria Pressley:8
Orang Utan
Hans Wurst:10
Ihr sollt ein Programm schreiben, das aus der Liste aller Übungsteilnehmer
und der Liste der vergebenen Punkte die vom Übungsleiter gewünschte
Liste produziert. Dem Programm sollen beim Aufruf zwei Dateinamen
übergeben werden, der erste enthält die Liste der Teilnehmer, der
zweite die Liste mit den vergebenen Punkte. Außerdem sollen folgende
Optionen unterstützt werden:
- -h
- Das Programm gibt lediglich einen kurzen Hilfetext auf die
Fehlerausgabe aus und tut sonst nichts weiter.
- -w
- Wenn diese Option angegeben wurde, soll am Ende eine
Warnung auf die Fehlerausgabe für jeden Studenten ausgegeben werden,
dem zwar Punkte zugewiesen wurden, der aber nicht in der Teilnehmerliste
steht.
- -o output
- Wenn diese Option angegeben wurde, folgt ein Dateiname
(hier output). Dieser Dateiname gibt an, wie die Datei heißt, in die
die erzeugte Liste geschrieben werden soll. Fehlt die Option, dann
wird auf die Standardausgabe geschrieben.
Wenn das Programm nicht wie oben beschrieben aufgerufen wird, soll
eine Fehlermeldung ähnlich wie bei der Option ``-h'' ausgeben werden.
- Mögliche Aufrufe der Programms (nennen wir es ``punkte'')
wären also:
- punkte teilnehmer meinepunkte
- punkte -w X Y
- punkte -h
- punkte -oZ X Y
- punkte -o Z X Y
- punkte -wo Z X Y
- Für die Argumentverarbeitung könnte ein Blick auf die
Manualseite der Funktion getopt(3c) hilfreich sein.
- Für die Ein- und Ausgabe in Dateien sind die Funktionen
fopen(3c), fclose(3c), fscanf(3c), fprintf(3c),
fgets(3c) und feof(3c) interessant.
- Eventuell lassen sich Lösungen zu alten Blättern wiederverwerten.
Christian Ehrhardt
2002-12-06