Ubung 6 - www2.inf.h

Werbung
Programmieren in C
Fachbereich Informatik
Dipl. Inf. Sigrid Weil
Übung 6
Aufgabe 6.1 (tarif)
Ihnen wird ein Internetzugang zu folgendem Tarif angeboten:
Der Basispreis beträgt 19,90 Euro/Monat, darin sind 30 Minuten kostenfreies Surfen enthalten. Jede darüber
hinausgehende Minute kostet 0,12 Euro.
Schreiben Sie eine C-Funktion, die den Rechnungsbetrag für jede beliebige Zeitdauer berechnet. Rufen Sie
diese Funktion für verschiedene Zeitdauern (z.B. 20 min., 30 min., 40 min.) auf.
Aufgabe 6.2 (feldgleich)
Schreiben Sie eine Funktion, die zwei Felder auf gleichen Inhalt testet.
Aufgabe 6.3 (bubble)
Eine (von vielen) Methoden zum Sortieren eines Feldes ist der sog. Bubble-Sort. Das zu sortierende Feld
der Länge n wird dabei n − 1 mal durchlaufen, wobei jeweils zwei benachbarte Feldelemente miteinander
verglichen werden. Falls sie in falscher Reihenfolge vorliegen (also ein größeres Element vor einem kleineren
liegt), werden sie vertauscht.
Beispiel: Eingabefolge 8, 5, 3, 2, 7, 4
Im ersten Durchlauf wird 8 mit 5, dann mit 3, mit 2, mit 7 und schließlich mit 4 vertauscht, man erhält 5, 3,
2, 7, 4, 8. Im zweiten Durchlauf wird die 5 mit 3, dann mit 2 vertauscht, anschließend tauschen noch 7 und 4
ihre Plätze, man erhält 3, 2, 5, 4, 7, 8. Im dritten Durchgang werden 3 mit 2 und 5 mit 4 vertauscht und in allen
folgenden Durchgängen sind keine Vertauschungen mehr nötig.
Programmieren Sie diesen Algorithmus. Strukturieren Sie Ihr Programm sinnvoll durch das Verwenden von
Funktionen.
Aufgabe 6.4 (determinante)
Eine quatratische 2 x 2- Matrix A ist ein Schema aus 4 Zahlen a, b, c, d, die tabellenartig angeordnet werden:
a b
A=
. Für solche Matrizen ist die Determinante definiert als det(A) = ad − bc.
c d
Die Lösungsmenge einer Gleichung ax + by = c ist eine Gerade in der (x − y)−Ebene, falls nicht sowohl
a = 0 als auch b = 0 ist. Zur Beschreibung einer Geraden g1 genügen also drei Parameter a1 , b1 , c1 mit
not(a1 = 0 and b1 = 0).
Falls eine zweite Gerade g2 durch die Parameter a2 , b2 , c2 mit not(a2 = 0 and b2 = 0) gegeben ist, so haben
die beiden
Geraden
g1 und g2 genau dann einen eindeutig bestimmten Schnittpunkt, wenn die Determinante
a1 b 1
von
6= 0 ist. (Andernfalls verlaufen die Geraden parallel oder sie liegen sogar aufeinander.)
a2 b 2
Falls ein Schnittpunkt existiert, lassen sich seine Koordinaten ebenfalls durch Determinanten berechnen und
zwar ist
a 1 c1
c1 b 1
det
det
a 2 c2
c2 b 2
und ys =
xs =
a1 b 1
a1 b 1
det
det
a2 b 2
a2 b 2
Schreiben Sie ein C-Programm, das zwei Geraden darauf überprüft, ob sie einen Schnittpunkt haben und diesen
ggf. berechnet. Die Berechnung von Determinanten sollte in einem Unterprogramm erfolgen. Wählen Sie als
Geradenparameter zunächst a1 = 1, b1 = 2, c1 = 3, a2 = 4, b2 = 5, c2 = 6 und dann a1 , b1 , c1 wie zuvor, aber
a2 = 2, b2 = 4, c2 = 6.
1
Aufgabe 6.5 (NewtonNS)
Programmieren Sie das Newton-Verfahren zur Berechnung von Nullstellen einer Funktion: Beginnend bei einem Startwert x0 wird xi+1 mittels der Iterationsvorschrift
xi+1 = xi −
f (xi )
f 0 (xi )
berechnet, bis |f (xi )| < ε für eine vorgegebene Genauigkeit ε > 0 ist. Verwenden Sie f (x) = x2 − 2 mit dem
Startwert x0 = 1 und die Genauigkeit ε = 1.0 ∗ 10−15 .
Zur Erinnerung:
Für f (x) = x2 − 2 ist die Ableitung gegeben durch f 0 (x) = 2x.
Verwenden Sie je ein Unterprogramm zur Berechnung von f (x), von f 0 (x) und eines für die Berechnung des
Absolutbetrags.
*) Auch die Ableitung einer Funktion an einer Stelle x kann numerisch berechnet werden, indem die Nähe(x)
für d → 0 bestimmt wird.
rung f 0 (x) = f (x+d)−f
d
Ändern Sie Ihr Unterprogramm zur Berechnung der Ableitung so ab, dass (beginnend mit d = 1) d
solange halbiert wird, bis zwei aufeinanderfolgende Näherungswerte einen Abstand kleiner als ε haben.
2
Zugehörige Unterlagen
Herunterladen