Abschlußtest Programmieren - ig

Werbung
Abschlußtest Programmieren
2. Juli 2010
Name:
Punkte von 32:
1. (6 P) Schreiben Sie die folgenden mathematischen Ausdrücke als korrekte C++Anweisungen (Variablendeklarationen, Speicherallokierungen und Fileinkludierungen
sind nicht nötig):
x+
(a) e
1
(x+y)2
q 1 (b) cos(x) + x·y
(
ln(x)
(c) y =
−1
falls x > 0.0
falls x ≤ 0.0
(d) Test, ob z außerhalb des Intervalls [a, b] liegt (mit a < b vorausgesetzt).
(e) Weisen Sie zi (i = 0, . . . , n − 1) den Wert 1/yi zu, solange |yi | > 0.001 gilt
(kein break, continue, goto, return).
Name:
2. (4 P) Welche Ausgaben liefert das folgende Programm in den zwei cout Anweisungen?
1
#include <iostream>
2
using namespace std;
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
float pot(float x, float& y)
{
x = 1;
do
{
y /= 10;
x += 2;
} while( y >= 1);
cout << x << " " << y << endl;
return x;
}
//
[ 2 Pkt]
//
[ 2 Pkt]
int main()
{
float a = 1000;
float b = 4e-1;
float c = pot(b, a);
cout << a << " " << b << "
return 0;
}
" << c << endl;
Name:
3. (6 P) Schreiben Sie ein C++-Programm, welches
(a) solange eine ganze Zahl n einliest, bis diese Zahl mindestens k (k > 0) ist, und
(b) berechnen Sie anschließend das geometrische Mittel der ersten n positiven ganzen geraden Zahlen
√
n
2 · 4 · 6···
Hierbei sind keine break, continue, goto, return erlaubt.
Name:
4. (6 P) Schreiben Sie eine Funktion welche aus einem, vom Hauptprogramm P
per Pak
rameterliste übergebenen, Vektor x den Vektor der Partialsummen sk =
i=0 xi
(k = 0, . . . ,vektorlänge x -1) berechnet und diesen Vektor s wieder an das aufrufende
Hauptprogramm übergibt.
Schreiben Sie das zugehörige Hauptprogramm in welchem Sie
• zuerst die Anzahl der Vektorkomponenten von Tastatur einlesen,
4.5
√
(i = 0, . . . ,vektorlänge x -1)
• danach den Vektor x mittels xi =
(i + 1) · i + 10
initialisieren,
• Ihre obige Funktion zur Partialsummenberechnung aufrufen und
• danach das letzte Element des Partialsummenvektors s ausgeben.
Hierbei sind keine break, continue, goto erlaubt.
Name:
Lehramt
5. (10 P) Definieren Sie eine Struktur Bruch, welche rationale Zahlen als Zähler und
Nenner speichert. Zur Vereinfachung gehen wir davon aus, daß unser Nenner stets
positiv und der Zähler stets nichtnegativ sei.
Implementieren Sie für Ihre Struktur Bruch die folgenden Funktionen:
• add: Addition zweier rationaler Zahlen.
• mult: Multiplikation zweier rationaler Zahlen.
• print: Ausgabe einer rationalen Zahl sowohl als (evtl. unechter) Bruch als auch
als gemischte Zahl.
soll sowohl als 17/4 als auch als 4+1/4 ausgegeben werden.
Bsp.: 17
4
Schreiben Sie ein Hauptprogramm welches drei rationalen Zahlen deren Werte a = 57 ,
5
, c = 12
zuweist, unter Benutzung Ihrer obigen Funktionen d = c∗(a+b)
b = 33
8
berechnet und die Zahlen b und d nacheinander über Ihre entsprechende Funktion
ausgibt.
Hierbei sind keine break, continue, goto erlaubt.
Name:
Mathematiker
6. (10 P) Die allg. Gleichung einer Ebene im R3 ist
ax + by + cz + d = 0 ,
sodaß jede Ebene durch die vier Parameter a, b, c, d charakterisiert ist. Entwerfen
Sie die Klasse Ebene mit privaten Membern und implementieren Sie alle nötigen
Methoden und Funktionen welche folgende Aufgaben erfüllen:
• Berechnung des Abstandes eines Punktes P0 = (x0 , y0 , z0 ) zur Ebene über die
Hessesche Normalform
ax0 + by0 + cz0 + d
√
.
± a2 + b 2 + c 2
~n
mit n = (a, b, c)T .
• Berechnung des Normalenvektors der Ebene: ~n0 =
k ~n k
• Berechnung des Winkels ϕ zwischen 2 Ebenen E1 und E2 mittels
~n1 · ~n2
,
cos ϕ =
k ~n1 k · k ~n2 k
sodaß das nachfolgende Codefragment unverändert benutzt werden kann.
Sie dürfen die Methoden/Funktionen der Klasse Vec3 benutzen.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <iostream>
#include <cmath>
using namespace std;
class Vec3
{
public:
// Diese Methoden muessen n i c h t implementiert werden !!
Vec3();
Vec3(const double x,const double y,const double z);
double norm() const;
friend double skalar(const Vec3 &a, const Vec3 &b);
public:
// auf diese Member darf zugegriffen werden!!
double x_,y_,z_;
};
// -------------------------------------------------------------------------// --Hier fehlt noch Ihre Klasse Ebene (Deklaration + Implementierung)
// -------------------------------------------------------------------------int main()
{
Ebene aa(2.3, 4, -1, 2), Ebene bb(-1.1, 4, 2, -3.2);
Vec3 pp(-1.2, 3, 0);
cout << "Abstand " << aa.dist(pp) << endl;
cout << "Ebenenwinkel " << angle(aa,bb) << endl;
return 0;
}
Name:
Name:
Herunterladen