Präsenzübung "C"
Übungsaufgaben für die Umgewöhnung von Java zu C:
a) Verdoppelung eines Geldbetrags:
Bei einem Anfangskapital von x EUR ergibt sich bei einem Zinssatz von p Prozent nach einem Jahr ein Kapital von
Schreiben Sie ein C-Programm, das die Laufzeit in Jahren berechnet, in der sich das Kapital mindestens verdoppelt. Nehmen Sie ein Anfangskapital von x=10500 EUR und einen Zinssatz von p=7.3 Prozent an.
Geben Sie das Startkapital, das Endkapital, den Zinssatz und die Verdoppelungslaufzeit aus (printf)!
Eine Beispiellauf des Programms könnte so aussehen:
Eingesetztes Kapital: 10500.0 Zinssatz in Prozent: 7.3 Nach 10 Jahren betraegt das Kapital 21241.57 EUR!
b) Ausgabe:
Geben Sie folgende ASCII-Grafik aus, so dass nicht mehr als ein Zeichen auf einmal ausgeben wird (verschachtelte Schleife):
# ### ##### ####### ######### ########### ############# ############### ################# ### ### ### ###
Zusatzaufgabe: Zeichnen Sie einen Obstbaum mit zufällig verteilten Äpfeln (Tipp: drand48).
########### ############### ########O######## ################# ###O############# ################# ##########O##O### ############### ########### ### ### ### ###
c) Quadratwurzel mit Newton-Iteration:
Für eine beliebige Zahl z (größer als 0) soll die Quadratwurzel $\sqrt{z}$ mit einer bestimmten Genauigkeit k berechnet werden. Dazu wird das sog. Newton-Verfahren verwendet, welches von der Funktion
die positive Nullstelle näherungsweise berechnet. Die Nullstelle entspricht der Quadratwurzel.
Dieser Algorithmus ist unter dem Namen Heron-Verfahren bekannt.
Das Verfahren ergibt eine Folge von Näherungswerten $x_0, x_1, ..., x_n$, die sich immer besser der Nullstelle und damit der Quadratwurzel annähern.
Mit dem Startwert der Folge
ergibt sich die Folge von Näherungswerten $x_i$ wie folgt:
Das Verfahren wird solange fortgesetzt (d.h. iteriert), bis die anzustrebende Genauigkeit erreicht ist. Dies ist der Fall, wenn Folgendes gilt:
Siehe auch hier.
Erstellen Sie ein C-Programm, das zunächst den Wert einliest, von dem die Quadratwurzel zu berechnen ist (scanf). Danach soll dieses Programm den Wert von k einlesen und die entsprechende näherungsweise Wurzelberechnung vornehmen.
Dazu schreiben Sie eine Funktion float wurzel(…) welche die obige iterative Berechnung mit einer Schleife (for?, while?) durchführt. Welche Parameter benötigt die Funktion und was wird zurückgegeben?
Möglicher Ablauf dieses Programms:
Zu welcher Zahl soll Quadratwurzel berechnet werden: 2 Wie gross darf die Abweichung vom wirklichen Wert maximal sein: 0.00001 1.500000 (1.Iteration) 1.416667 (2.Iteration) 1.414216 (3.Iteration) Newton-Wert: 1.414216 Wirklicher Wert: 1.414214 Tatsaechliche Abweichung: 0.000002