Dr. Andreas Borchert Institut für Angewandte
Informationsverarbeitung 31. Oktober 2006
Christian Ehrhardt Blatt 2
Allgemeine Informatik III (WS 2006/2007)
Abgabetermin 7.11.2006
Hätte Doris Day seinerzeit schon etwas über den
C-Präprozessor gewußt, hätte Ihr Lied Que Sera Sera
vielleicht anders ausgesehen. Eine mögliche Version wollen wir
in dieser Aufgabe erarbeiten.
Wir beginnen mit dem Originaltext, der auf der Homepage der Vorlesung
heruntergeladen werden kann (um Satzzeichen und andere Dinge, die den
Präprozessor stören könnten, bereinigt). Diesen Text werden wir
jetzt schrittweise umarbeiten, so daß erst der Aufruf des
C-Präprozessors den Originaltext wieder zum Vorschein bringt. Das
kann nach jedem Schritt durch den Aufruf von gcc -E
überprüft werden. Dabei müssen allerdings Leerzeilen und Zeilen,
die mit # beginnen, ignoriert werden.
Identifizieren Sie mindestens 4 wiederkehrende Textstücke und
definieren Sie dafür entsprechende Makros, die dann statt dem
Originaltext verwendet werden. Auch für Autor und Titel
des Liedes sollten Makros definiert werden.
Zunächst stören die Makrodefinitionen aus der vorherigen
Teilaufgabe im eigentlichen Text. Verbannen Sie diese in eine
separate Datei, die eingebunden wird. Des weiteren kann der
immer wiederkehrende Refrain ebenfalls in eine eigene Datei
verbannt werden.
Die ersten beiden Strophen beginnen recht ähnlich. Verwenden
Sie für diese beiden Strophenanfänge die Datei
strophe.h, die Sie auf der Homepage der Vorlesung
herunterladen können. Damit das funktioniert, werden Sie weitere
Makrodefinitionen benötigen. Sollten Sie gar eine existierende
Makrodefinition wieder loswerden wollen, geschieht das mit
#undef MAKRONAME.
Sollte hier (in strophe.h oder anderswo) eines der
Makros aus der ersten Teilaufgabe sinnvoll sein, so soll dieses
natürlich verwendet werden. Darüber hinaus darf die Datei
strophe.h selbst nicht verändert werden.
Schreiben Sie ein Programm, das zu einer Reihe von Zahlen jeweils
folgende Dinge ausgibt:
- Die Zahl selbst (linksbündig auf 2 Nachkommastellen)
- Die Zahl in Exponentialdarstellung (4 Nachkommastellen)
- Die Wurzel der Zahl (rechtsbündig)
- Einen Text (linkbündig), der nur davon abhängt, ob die
Zahl negativ ist
- Einen Text (rechtsbündig), der nur davon abhängt, ob die
Zahl groß (dem Betrag nach größer als 100) ist
Dabei soll die erste Zahl, die Obergrenze und die Schrittweite
zu Beginn von der Tastatur eingelesen werden. Orientieren Sie sich
bei der Ausgabe an dem folgendend Aufruf der Musterlösung:
Anfangswert: -10
Schrittweite: 13.2
Ende: 150
Wert | Exponential| Wurzel | Negativ? | gross?
-----------+------------+------------+----------+--------
-10.00 |-1.0000E+01 | NaN | ja | nein
3.20 | 3.2000E+00 | 1.788854 | nein | nein
16.40 | 1.6400E+01 | 4.049691 | nein | nein
29.60 | 2.9600E+01 | 5.440588 | nein | nein
42.80 | 4.2800E+01 | 6.542171 | nein | nein
56.00 | 5.6000E+01 | 7.483315 | nein | nein
69.20 | 6.9200E+01 | 8.318654 | nein | nein
82.40 | 8.2400E+01 | 9.077445 | nein | nein
95.60 | 9.5600E+01 | 9.777525 | nein | nein
108.80 | 1.0880E+02 | 10.430724 | nein | ja
122.00 | 1.2200E+02 | 11.045361 | nein | ja
135.20 | 1.3520E+02 | 11.627553 | nein | ja
148.40 | 1.4840E+02 | 12.181954 | nein | ja
Folgende Dinge sind dabei noch zu beachten:
- Die Funktion sqrt berechnet die Wurzel einer
Zahl. Damit diese Funktion bekannt ist, muß die Headerdatei
math.h eingebunden werden. Außerdem benötigt der
Aufruf des gcc zusätzlich die Option -lm.
- Die Texte für ja und nein sollen
zu Beginn des Programms mit Hilfe von Makros definiert werden.
Es soll also durch eine einzige Änderung möglich sein, etwa
yes statt ja auszugeben.
Beginnend mit dem 7. November (also mit der Besprechung
der Lösung zu diesem Blatt) beginnen die Übungen immer erst um
15:30h.
Das Lied Que Sera Sera stammt aus dem 1956 von
Alfred Hitchcock gedrehten Film Der Mann der zuviel
wußte (The Man Who Knew Too Much). Das Lied spielt in dem Film
eine zentrale Rolle und wird auch im Film von Doris Day gesungen,
die eine der Hauptrollen spielt. Wer den Film noch nicht kennt,
dem sei er hiermit wärmstens empfohlen.
Christian Ehrhardt
2006-10-31