2.¨Ubung des Programmierpraktikums

Werbung
2. Übung des Programmierpraktikums
Abgabetermin: 27. März 2017, 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. Diese 3 Zahlen stellen die Seitenlängen eines Quaders dar.
• 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.
Desweiteren sollen Sie eine Funktion schreiben welche obige 3 Größen als Inputparameter erhält und die folgende Werte als Outputparameter an das aufrufende Programm
zurückgibt: Volumen, Oberfläche, gesamte Kantenlänge, Durchmesser (Raumdiagonale)
des Quaders.
Die Eingabedaten und Ergebnisse sollen im Hauptprogramm (informativ) ausgegebenen
werden. Wählen Sie die Datentypen der zu definierenden Variablen nach dem Wertebereich (2 Pkt.)
der Ergebnisse aus. Lesen Sie dazu §2.1 des Skriptes1 .
Eingabedaten: (data 1, data 2, data 3): (4, 3, 12), (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 · e2 = ea·b+2
ln b
log10 b =
ln 10 √
π/2 − arcsin a = arctan
1 − a2
a
cosh a − sinh 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.
Hinweise: exp, log, sqrt, pow, M PI, sizeof, numeric limits
Testdaten (a,b): (0.9876, 1.762e − 4), (0.00187, 98),
1
http://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
http://www.cplusplus.com/reference/clibrary/cmath
3
http://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
4
http://www.cplusplus.com/reference/cmath/?kw=cmath
5
http://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Beispiele/DataTypes.cpp
6
http://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Beispiele/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 =
iϕb
e
− (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://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
9
http://www.cppbuch.de/
8
8. Berechnen Sie die Summe aller Quadrate natürlichen Zahlen von n1 bis n2 (n2 >= n1)
n2
P
k 2 über die folgenden 4 Konstrukte: (2 Pkt.)
[Bre1110 , p.78] für selbstgewählte n1 und n2, also
k=n1
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 folgenden C++-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
6. März 2017, 08:53
http://www.cppbuch.de/
http://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Script/html/script_programmieren.pdf
12
http://imsc.uni-graz.at/haasegu/Lectures/Kurs-C/Download/kfu.html
11
Herunterladen