2.¨Ubung des Programmierpraktikums

Werbung
2. Übung des Programmierpraktikums
Abgabetermin: 14. März 2016, 23:59 Uhr
Die Übungen sind grundsätzlich allein zu lösen. Gruppenarbeit ist nicht erlaubt.
Abzugeben sind jeweils die sinnvoll dokumentierten Programmfiles (*.cpp, *.h) in einem
separaten Ordner dessen Name bsp nummer zu sein hat, d.h., der Ordner bsp 2 gehört zu
Aufgabe 2.
4. Schreiben Sie ein Programm, welches 3 natürliche Zahlen größer Null einliest und davon
die Summe, das arithmetische, geometrische und harmonische Mittel berechnet, sowie
in Variablen speichert. Die Eingabedaten und Ergebnisse sollen (informativ) ausgege- (2 Pkt.)
benen werden. Wählen sie die Datentypen der zu definierenden Variablen nach dem
Wertebereich der Ergebnisse aus. Lesen Sie dazu §2.1 des Skriptes1 .
• Sichern Sie die Eingabe der Zahlen so ab, daß nur Zahlen größer Null akzeptiert
werden, d.h., die Eingabe wird solange wiederholt bis dies der Fall ist.
• Überprüfen Sie im Code, ob nach der Berechnung der 3 Mittelwerte auch
tatsächlich
meanarithm. ≥ meangeom. ≥ meanharm.
gilt und geben Sie andernfalls eine Fehlermeldung aus.
Eingabedaten (data 1, data 2, data 3): (16, 4, 1), (3, 5, 8)
5. Überprüfen Sie, ob die folgenden Rechenregeln der Mathematik auch im Computer
gelten, indem Sie rechte und linke Seite nachstehender Gleichungen und die Differenz
beider Seiten ausgeben. Die verfügbaren math. Funktionen sind unter cmath 2 zu finden
und werden über
#include <cmath>
in Ihren Quelltext eingebunden. Lesen
Sie dazu §3.6 des Skriptes3 und im www4 .
(ea )b = ea·b
ln b
log10 b =
ln 10
a
π/2 − arccos a = arctan √
1 − a2
sinh a − cosh a = −e−a
Testen Sie diese Rechenregeln für einfach genaue Zahlen (float). Geben Sie jeweils die (1 Pkt.)
Anzahl von Byte zur Speicherung einer Zahl unter Nutzung von sizeof5 an und geben
Sie die relative Genauigkeit für Ihren Datentyp analog zum Beispiel Ex390.cpp6 an.
Die Zahl π wird von den meisten Compilern in obigem Headerfile als M PI bereitgestellt.
Testdaten (a,b): (0.9876, 1.762e − 4), (0.00187, 98),
1
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
http://www.cplusplus.com/reference/clibrary/cmath
3
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
4
http://www.cplusplus.com/reference/cmath/?kw=cmath
5
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Examples/DataTypes.cpp
6
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Examples/Ex390.cpp
2
6. Berechnen Sie die folgenden Ausdrücke für gegebene komplexe Zahlen a, und b.
Die verfügbaren math. Funktionen sind unter complex 7 zu finden und werden über
#include <complex> wie in §2.3.2 des Skriptes8 in Ihren Quelltext eingebunden.
(1 Pkt.)
Benutzen Sie die doppelt genauen komplexen Zahlen (complex<double> b(-3.5,2)).
Geben Sie für die geg. Zahlen den Winkel ϕb (arg()) und den Betrag rb (abs()) in der
Gaußschen Zahlenebene aus.
eπ·a =
a3 =
√
b =
b+b =
e
iϕb
− (cos ϕb + i · sin ϕb ) =
3·a−b =
Testdaten (a,b): (0 + i, −3.5 + 2 · i),
(0 +
2
3
· i, −3 − 4 · i),
7. Fünf Personen haben versucht, die Summe der Zahlen 1 bis 100 zu berechnen [Bre119 ,
p.78]. Beurteilen Sie die folgenden Lösungsvorschläge (ohne diese zu programmieren!)
bzgl. Korrektheit und weiterer möglicher Fallen. Begründen Sie Ihre Einschätzung!
(1 Pkt.)
(a)
int n = 1, sum = 0;
while(n <= 100) {
++n;
sum += n;
}
(b)
int n = 1, sum = 1;
while(n < 100) {
n += 1;
sum += n;
}
(c)
(d)
int n = 1;
while(n < 100) {
int sum = 0;
n = n + 1;
sum = sum + n;
}
(e)
int n = 1, sum = 0;
while(n <= 0100) {
sum += n;
++n;
}
int n = 100;
int sum = n*(n+1)/2;
Geben Sie ein File main.cpp (im Ordner bsp 7) ab, in welches Sie Ihre Einschätzungen
per Kommentar hineinschreiben.
7
http://www.cplusplus.com/reference/std/complex/
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
9
http://www.cppbuch.de/
8
8. Berechnen Sie die Summe aller natürlichen Zahlen von n1 bis n2 (n2 >= n1) [Bre1110 ,
p.78] für selbstgewählte n1 und n2 über die folgenden 4 Konstrukte:
(2 Pkt.)
a) einer for-Schleife,
b) einer while-Schleife,
c) einer do while-Schleife,
d) ohne Schleife.
Lesen Sie dazu §4.4-4.6 des Skriptes11 .
Hinweise:
Schauen Sie sich die folgendenC++-Funktionen/Funktionalitäten an und nutzen Sie diese
gegebenenfalls:
pow, cin, cout, log, log10, acos, atan, exp, sqrt, arg, abs, conj, if, else,
for, while, do while
Die Abgabe der Lösungen (*.cpp-Files, *.h, (Makefile*,) . . .,) erfolgt an der KFU über
Moodle, siehe dazu die Hinweise auf der LV-Homepage12 .
Die Verzeichnisnamen mit den Files für die jeweilige Aufgabe müssen dem Schema
bsp nummer folgen, z.B. enthält das Verzeichnis (der Ordner) bsp 1 alle Files für Beispiel 1.
Andere Verzeichnisnamen zählen als nicht abgegeben.
Keine Lehrzeichen, Sonderzeichen oder Umlaute in File- und Verzeichnisnamen benutzen
(Portabilität).
G. Haase
10
29. Februar 2016, 12:36
http://www.cppbuch.de/
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
12
http://www.uni-graz.at/~haasegu/Lectures/Kurs-C/Download/kfu.html
11
Herunterladen