Entwickeln Sie ein Programm, das einen Text zeichenweise von der Standardeingabe einliest. Dabei soll es, je nach den in der Kommandozeile uebergebenen Argumenten, entweder den Text in Woerter zerlegen und diese alphabetisch sortiert ausgeben oder die Anzahl der Zeichen/Woerter/Zeilen des Textes zaehlen. Jedes moegliche Argument (-s fuer sortieren, -c fuer Anzahl der Zeichen, -w fuer Woerter und -l fuer Zeilen) soll in der Main- Funktion durch eine Variable repraesentiert werden, die auf "wahr" gesetzt wird, wenn das ihr entsprechende Argument in der Kommandozeile vorhanden ist. Diese Aufgabe soll von einer Funktion erledigt werden, d.h. sie muss ggf. die o.g. Variablen aendern koennen. Werden unbekannte Argumente auf der Kommandozeile uebergeben, so soll die Funktion eine Fehlermeldung ausgeben und das Programm beenden (siehe "man exit"). Das gleiche soll passieren, wenn -s zusammen mit einer der anderen Optionen verwendet wird. Dagegen ist die gleichzeitige Verwendung von -c, -w und -l erlaubt. Falls das Programm ohne Argumente aufgerufen wird soll es sich so verhalten als waere -w angegeben. Die Bearbeitung des eingegebenen Textes soll bei den Argumenten -c, -w und -l (oder bei einer Kombination davon) von _einer_ Funktion vorgenommen werden. Diese soll den Text zeichenweise einlesen (siehe "man getchar") und dabei mitzaehlen, wieviele Zeichen/Woerter/Zeilen vorhanden sind. Zur Bestimmung der Wortgrenzen koennen sie die vorhandenen C-Funktionen verwenden (siehe "man isalnum", "man isspace", usw.). Eine andere Funktion soll die Verarbeitung des Textes erledigen, wenn die Option -s verwendet wird. In dieser Funktion muessen die in Aufgabe 30 erwaehnten Felder definiert werden, die dann mit den ebenfalls vorgestellten Funktionen next_word() und insert_word() gefuellt werden koennen. Achten Sie hierbei darauf, dass ein Wort nur einmal im Feld abgespeichert wird. Nun soll noch in alphanumerisch aufsteigender Reihenfolge (d.h. so wie von string_cmp() in Aufgabe 30 geordnet) sortiert (siehe Teilaufgabe d) und die Woerter in der neuen Reihenfolge augegeben werden. Sie benoetigen zwei weitere Funktionen zum sortieren des Feldes all_words: Eine Funktion swap() zum Vertauschen von zwei Elementen des Feldes, sowie eine Funktion string_sort(), die die Feldelemente (bzw. die Strings, worauf die Elemente zeigen) vergleicht und ggf vertauscht (man erinnere sich an den Bubble-Sort...). Geben Sie zu der im Aufgabenteil a) programmierten Funktion ein Struktogramm ab. Sie finden unter /proj/i4cing/CountAndSort/ ein Geruest fuer Ihr Programm, das u.a. auch die in Aufgabe 30 vorgestellten Funktionen enthaelt (es ist alles auch im WWW verfuegbar unter http://www4.informatik.uni-erlangen.de/Lehre/SS98/V_C/Uebung/). Dort liegt ausserdem ein Text, den Sie zum Testen Ihres Programms verwenden koennen. Wenn das Programm z.B. cas heisst koennte ein Testlauf z.B. so aussehen: > cas -l -c < A32.txt Zeichen: 3115 Zeilen: 65