Dr. Andreas Borchert Sektion Angewandte Informationsverarbeitung 20. April 1999
Ingo Melzer Blatt 2


[c]



Allgemeine Informatik II (SS 1999)


Abgabetermin 29. April 1999

Zählen (3 Punkte)

Schreiben Sie ein Modula-2 oder Oberon Programm, das von der Standardeingabe liest und am Ende ausgibt, wieviele alphanumerische, mathematische (,,+``, ,,*``, ,,-``, ,,/``, ,,(`` oder ,,)``) und sonstige Zeichen es gewesen sind. In Oberon ist es möglich mit Streams.ReadByte ein Zeichen von Streams.stdin zu lesen.

3 Faulus (7 Punkte)

Der römische Soldat Gaius Faulus soll den Kasernenhof kehren. Nach einigen Stunden hat er erst eine einzige Platte gesäubert. Vom Zenturio zur Rede gestellt, erläutert er seine Arbeitsweise:

,,Ich fege die erste Hälfte der Platte. Ich verschnaufe ein wenig. Ich fege die zweite Hälfte der Platte. Ich verschnaufe ein wenig.``

Wäre Gaius Faulus etwas ehrlicher gewesen, hätte er stattdessen sagen müssen:
,,Ich fege die erste Hälfte der ersten Hälfte der Platte.
Ich verschnaufe ein wenig.
Ich fege die zweite Hälfte der ersten Hälfte der Platte.
Ich verschnaufe ein wenig.
Ich fege die erste Hälfte der zweiten Hälfte der Platte.
Ich verschnaufe ein wenig.
Ich fege die zweite Hälfte der zweiten Hälfte der Platte.
Ich verschnaufe ein wenig.``

Schreiben Sie ein Modula-2 oder Oberon Programm, das die Rede des Gaius Faulus wiedergibt für den Fall, daß er noch um zwei Stufen ehrlicher ist (und der Zenturio ihn ausreden läßt). Das Programm soll mit Rekursion arbeiten. Die Rekursionstiefe in diesem Fall 4 soll am Anfang eingelesen werden (in Oberon mit Read.Int). In Oberon sollte man auf Strings.Concatenate und auf COPY zurückgreifen.

Bei dieser Aufgabe dürfen Sie Satzbau und Wortwahl auch etwas variieren, nicht aber das generelle Schema.

Die Idee dieser Aufgabe stammt von Martin Hasch.



Ingo Melzer 4/20/1999