• Keine Ergebnisse gefunden

Dr. Johannes Mayer Abteilung Angewandte Informationsverarbeitung 18. Oktober 2005

N/A
N/A
Protected

Academic year: 2021

Aktie "Dr. Johannes Mayer Abteilung Angewandte Informationsverarbeitung 18. Oktober 2005"

Copied!
1
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

Dr. Johannes Mayer Abteilung Angewandte Informationsverarbeitung 18. Oktober 2005

Axel Blumenstock Blatt 1

Christian Ehrhardt

A

Allgemeine Informatik III / Systemnahe Software I (WS 2005/2006)

Abgabetermin: 25. Oktober 2005

Uber die Geheimnisse der Kapitalbildung (10 Punkte) ¨

Seit einigen Jahren ist es ja nun hip, sich ¨uber seine Altersvorsorge Gedanken zu machen.

Nehmen wir einmal an, Ihre Bank hat Ihnen folgendes Angebot unterbreitet:

Zahlen Sie j¨ ahrlich einen Betrag von 1000 Euro ein.

Nach Ablauf von 40 Jahren erhalten Sie 200 000 Euro ausbezahlt.

Nat¨urlich interessiert Sie, ob das ein gutes Angebot ist. Da Sie es gewohnt sind, in Zinss¨atzen zu denken, wollen Sie nun den Zinssatz ermitteln, den ein Sparbuch bieten m¨usste, um bei einer j¨ahrlichen Einzahlung von 1000 Euro nach 40 Jahren ebenfalls 200 000 Euro wert zu sein.

(a) (4 Punkte) Schreiben Sie zun¨achst eine Funktion

double kapital(double rate, double zinssatz, int laufzeit)

die f¨ur

• eine j¨ahrliche Einzahlung (rate) zum 1. Januar,

• einen Zinssatz (in Prozent) sowie

• einer Laufzeit (in Jahren)

das am Ende angesammelte Kapital ermittelt.

Definieren Sie sich dann in der main()-Funktion Ihres Programms Konstanten f¨ur die Sparrate und Laufzeit (Sie m¨ussen diese Parameter nicht von der Standardeingabe einle- sen) und geben Sie unter Verwendung obiger Funktion die Auszahlung f¨ur ganze Prozente von null bis zehn aus. Die Ausgabe k¨onnte etwa folgendermaßen aussehen:

Ein Zinssatz von 0% ergibt 40000.00 Euro Ein Zinssatz von 1% ergibt 49375.24 Euro Ein Zinssatz von 2% ergibt 61610.02 Euro Ein Zinssatz von 3% ergibt 77663.30 Euro (... usw ...)

(b) (4 Punkte) Implementieren Sie nun in einem zweiten Programm das Bisektionsverfahren

1

, um den genauen Zinssatz f¨ur eine Auszahlung von 200 000 Euro bei einer Jahresrate von 1000 Euro zu ermitteln. Sie k¨onnen davon ausgehen, dass der Zinssatz in einem Inter- vall zwischen null und 100 Prozent liegt. W¨ahlen Sie dann probehalber als Zinssatz die Intervallmitte m , errechnen daf¨ur (wieder unter Zuhilfenahme der Funktion kapital()) den Endbetrag nach 40 Jahren und ersetzen dann die entweder die obere oder die untere Grenze durch m , so dass der gesuchte Zinssatz stets innerhalb des Intervalls bleibt. Bre- chen Sie ab, wenn der Fehler vernachl¨assigbar klein ist (10

6

) und geben Sie das Ergebnis aus.

(c) (2 Punkte) Auch wenn Sie all das (nat¨urlich ;-)) fehlerfrei runterprogrammiert haben, m¨ochten Sie sich den Bisektionsvorgang noch ein wenig genauer anschauen und dazu ein paar Zwischenergebnisse – etwa die sich in jedem Schritt ergebende Auszahlung – ausgeben. Nat¨urlich k¨onnten Sie einfach direkt ein paar weitere printf-Anweisungen einf¨ugen. Eleganter aber ist, f¨ur Debug-Ausgaben ein Makro zu verwenden, um sie an zentraler Stelle ein- und abschalten zu k¨onnen.

In den Beispielprogrammen sehen Sie, wie die #define-Direktive verwendet werden kann.

Legen Sie sich in ¨ahnlicher Weise ein Makro

DEBUG_PRINT_DOUBLE(text, variable)

an, das mit Hilfe von printf den gegebenen Text und den Wert der double-Variable ausgibt. Haben Sie beispielsweise eine Variable

” auszahlung“, soll die Programmzeile DEBUG_PRINT_DOUBLE("auszahlung", auszahlung);

einen Text wie

auszahlung == 77663.30

schreiben.

(d) (2 Zusatzpunkte, die f¨ur die 100 % nicht erforderlich sind) Versuchen Sie, dieselbe Ausgabe von Variablenname und Variablenwert durch eine Programmzeile wie

DEBUG_PRINT_DOUBLE(auszahlung);

zu erzeugen.

Viel Erfolg!

1

auch als Intervallhalbierung bekannt

Referenzen

ÄHNLICHE DOKUMENTE

Zweck einer solchen Map ist, eine Menge von Schlüssel-Werte-Paaren so zu verwalten, dass jederzeit ein neuer Wert mit einem Schlüssel assoziiert werden sowie der zu einem

(b) Erweitern Sie Ihr Programm so, dass die Größe (in Bytes) aller darin enthaltenen regu- lären Dateien ausgelesen werden und eine Häufigkeitsverteilung über die Anfangszif-

Unser find soll als Programmoptionen eine beliebige Zahl von Bedingungen (auch: Prä- dikaten), gefolgt von einer beliebigen Zahl von Verzeichnissen entgegennehmen und alle Dateien

derzeitiges Hoechstgebot (Frank Reich um 10:25:55): 3.12 Euro Gebot (in Cent) eingeben oder <ENTER> fuer Aktualisierung: 517 Gebot liegt nicht ueber aktuellem

Gesamtkosten = Fixkosten der Abteilung + Verdienst der Angestellten + Zus¨atzlich er- brachte Leistungen ( ¨ Uberstunden der Angestellten * halber Stundenlohn). • Abteilung

Ziel des Spiels 4-Gewinnt ist es, als erster von zwei Spielern vier Steine in einer Reihe, einer Spalte oder in einer Diagonalen zu bekommen. Dazu werfen die Spieler jeweils

M¨ochte ein Spieler gegen einen anderen Spieler antreten und es gibt bereits wartende Spieler, so werden diese angezeigt und der Spieler kann sich einen Gegenspieler aussuchen –

• Wird die Frage falsch beantwortet, ist das Spiel vorbei und der Kandidat erh¨alt 0, 500 oder 16000 Euro (je nachdem ob er gerade eine der ersten, der mittleren oder der