Sie sind auf Seite 1von 2

Lehrprofessur fr Informatik WS 2016/2017

Prof. Dr. Robert Lorenz, Marius Brendle, Johannes Metzger 23.11.2016

Betreutes Programmieren Vorlesung Informatik 1, Blatt 5


leichte Aufgabe
durchschnittliche Aufgabe
schwere Aufgabe

Ziel der heutigen Aufgaben ist es, ein Programm mit Benutzung von Zeichenketten zu schreiben. Wie letzte Wo-
che sollen zur Erledigung der Aufgaben wieder mehrere kleine Funktionen eingesetzt werden. Gebt werden das
Schreiben von Schleifen und Funktionen fr Zeichenketten. Falls Sie Erklrungen zu Zeichenketten, Schleifen
oder Funktionen bentigen, finden Sie diese in den Folien zu den Kapiteln 6 und 7.

Aufgabe 6 (Zeichen zhlen in einer Zeichenkette)

Schreiben Sie ein C-Programm, das wiederholt eine Zeichenkette mit mindestens 1 und hchstens 20 Zeichen
von der Kommandozeile einliest, anschlieend die Anzahl der Leerzeichen in dieser Zeichenkette zhlt und
schlielich diese Anzahl auf Kommandozeile ausgibt. Nach einer gltigen Eingabe mit zugehriger Ausgabe
soll sich dieser Programmablauf immer wiederholen, und zwar solange bis der Benutzer die Zeichenkette exit
eingibt. Bei ungltigen Eingaben soll der Benutzer wiederholt zu einer gltigen Eingabe aufgefordert werden.
Pufferfehler (also berprfungen auf das Zeichen EOF) mssen in dieser Aufgabe nicht bercksichtigt werden.
Die Implementierung soll gewhrleisten, dass man das Programm spter leicht fr Zeichenketten mit anderen
Lngen abndern kann. Zerlegen Sie das Programm in die folgenden Funktionen, die Sie dann am Ende im
Hauptprogramm benutzen und dadurch das gesamte System zusammensetzen. Lsungen, die nicht dieser Anlei-
tung folgen, werden nicht abgenommen.

Aufgabe 6.1 (Funktion zum Einlesen der Zeichenkette)

Implementieren Sie eine Funktion int read_string(char input[]), die vom Benutzer einmalig eine
Zeichenkette mit mindestens 1 und hchstens 20 Zeichen einliest und in input speichert. Tritt kein Fehler auf
und ist die Eingabe gltig, wird 1 zurckgegeben. Ansonsten wird der Eingabe-Puffer geleert und 0 zurckge-
geben.

Hinweise
Sie knnen die read_string-Funktion aus der Vorlesung (Kapitel 7) geeignet modifizieren.
Benutzen Sie fr die Grenzen der Eingabelnge geeignete symbolische Konstanten

Aufgabe 6.2 (Funktion zum Zhlen von Zeichen in einer Zeichenkette)

Implementieren Sie eine Funktion int count_string(char w[], char c), die zhlt, wie oft das Zei-
chen c in w vorkommt, und die berechnete Anzahl zurckgibt.

1
Aufgabe 6.3 (main-Funktion und Hauptprogramm)

Schreiben Sie eine main-Funktion, in der das Programm sich mit einer kleinen berschrift zur Funktion des
Programms meldet und dann wiederholt ber read_string eine Zeichenkette mit mindestens 1 und hchstens
20 Zeichen von der Kommandozeile einliest. Bei ungltigen Eingaben soll der Benutzer wiederholt zu einer
gltigen Eingabe aufgefordert werden. Bei gltigen Eingaben, die nicht der Zeichenkette exit entsprechen, soll
das Programm mit count_string die Anzahl der Leerzeichen in der eingegebenen Zeichenkette zhlen und
diese Anzahl auf Kommandozeile ausgeben. Danach soll sich dieser Programmablauf immer wiederholen, und
zwar solange bis der Benutzer die Zeichenkette exit eingibt. Nach der Eingabe von exit soll das Programm
enden.
Fgen Sie schlielich den Quellcode der Funktionen read_string, count_string und main zu einem
funktionierenden Hauptprogramm zusammen. Verwenden Sie fr die Grenzen der Lngen der verwendeten Zei-
chenketten geeignete symbolische Konstanten.

Hinweise
Zum Vergleich von Zeichenketten verwenden Sie die strcmp-Funktion.
Bei der Implementierung von main sind unter Umstnden die Anweisungen break; und continue;
hilfreich.