Beispiel: Programmiertest Angewandte Programmierung

Werbung
Beispiel: Programmiertest Angewandte Programmierung
(Studiengang Bachelor PT)
In dieser Aufgabe geht es um Sterne in einem Sternhaufen. Jeder Stern ist durch seine
Koordinaten (der Einfachheit nur in zwei Dimensionen) und seine Masse definiert. Diese
Werte werden als Zufallszahlen berechnet.
• Grundaufgabe (notwendig zum Bestehen des Tests, 45 Punkte, Note 4): Die x- und
y-Koordinaten sowie die Massen (in Sonnenmassen) der Sterne sollen berechnet und in
je einem Feld (eines für die x-Koordinaten, eines für die y-Koordinaten, eines für die
Massen) abgespeichert werden. Legen Sie die Felder in einer festen Größe (z. B. 100)
an und geben Sie die Anzahl n der Sterne am Anfang ein. Die Koordinaten sollen
Zufallswerte im Bereich 0 .. 500, die Massen Zufallswerte im Bereich 1 .. 10 erhalten.
Koordinaten und Massen aller Sterne sollen als Tabelle ausgegeben werden.
Berechnen Sie die Zufallszahlen mit einer Funktion int zufall (int anfang,
int ende), die eine Zufallszahl im Bereich anfang bis ende zurückliefert.
Im anschließenden Abfrageteil soll die Möglichkeit bestehen, sich Koordinaten und
Massen einzelner Sterne anzeigen zu lassen. Dazu ist die Nummer eines Sterns
einzugeben, Koordinaten und Masse werden ausgegeben. Außerdem ist der Abstand
des Sterns zum Punkt mit den Koordinaten (x=250, y=250) auszugeben. Dies soll mit
einer ja/nein-Abfrage wiederholt werden. Hinweis: Der Abstand zwischen den Punkten
(xa, ya) und (xb, yb) ist
abst = √ (xa-xb)² + (ya-yb)²
Beispiel:
Anzahl der Sterne: 6
Nr.
x
y
Masse
-----------------------------1
305
421
5
2
300
94
7
3
203
403
5
4
31
453
7
5
38
384
8
6
404
219
2
Abfrageteil:
Nummer des Sterns: 2
x = 300, y = 94, Masse = 7, Abstand = 70.7107
Noch ein Stern? [j/n] j
Nummer des Sterns: 5
x = 38, y = 384, Masse = 8, Abstand = 299.813
Noch ein Stern? [j/n] n
Die folgenden Erweiterungen können in beliebiger Reihenfolge bearbeitet werden. Wenn
mehrere Erweiterungen bearbeitet werden sollen, kann es sinnvoll sein, diese zu
kombinieren. Dadurch kann man sich zum Teil Arbeit sparen. Für die Note 1,0 sind 90
Punkte von insgesamt 120 Punkten notwendig, es müssen also nicht alle Erweiterungen
für die Note 1,0 bearbeitet werden (5 Punkte = 1/3 Note).
•
Erweiterung "Funktion 1" (5 Punkte): Setzen Sie zur Berechnung der Entfernung
eine Funktion ein. Diese soll die vier beteiligten Koordinaten als Parameter haben und
das Ergebnis mit return zurückgeben.
•
Erweiterung "Struktur" (10 Punkte): Definieren Sie einen Strukturtyp Stern (mit den
Komponenten x, y und m, alles vom Typ double) und speichern Sie die Sternkoordinaten und -massen in einem Feld vom Typ Stern ab.
• Erweiterung "Masse" (5 Punkte): Nach dem Abfrageteil soll die Gesamtmasse M des
Sternhaufens berechnet und ausgegeben werden. Beispiel: Mit den Werten der
Grundaufgabe wird zusätzlich ausgegeben:
Gesamtmasse: 34
• Erweiterung "Schwerpunkt" (10 Punkte): Der Schwerpunkt (xS, yS) des Sternhaufens
soll berechnet werden. Dieser ist wie folgt definiert:
xS = (x1*m1 + x2*m2 + ... + xn*mn) / M
yS = (y1*m1 + y2*m2 + ... + yn*mn) / M
Hierbei ist M die Gesamtmasse und xi, yi und mi sind die Koordinaten und die Masse
des Sterns Nr. i. Beispiel: Mit den Werten der Grundaufgabe wird zusätzlich
ausgegeben:
Schwerpunkt: (175.559, 337.029)
• Erweiterung "Funktion 2" (10 Punkte): Setzen Sie zur Berechnung der Gesamtmasse
und des Schwerpunkts eine Funktion ein. Diese soll als Parameter die Arrays (Koord.,
Massen, bzw. Stern-Struktur) und die Anzahl der Sterne haben. Die Ergebnisse sollen
als Parameter zurückgegeben werden (bzw. bei Verwendung von Stern-Strukturen
können Gesamtmasse und Schwerpunkt als Stern-Struktur mit return
zurückgegeben werden).
• Erweiterung "Minimum" (10 Punkte): Ermitteln Sie denjenigen Stern, der den
geringsten Abstand zum Schwerpunkt hat und geben Sie diesen aus. Beispiel: Mit den
Werten der Grundaufgabe wird zusätzlich ausgegeben:
Stern Nr. 3 hat minimalen Abstand zum Schwerpunkt: 71.4502
• Zusätzlich 5 Punkte, falls die Erweiterungen "Funktion 2" und "Struktur" bearbeitet
wurden und bei der Funktion Strukturen-Variablen übergeben werden
• Erweiterung "Vector / Dynamisches Feld" (8 Punkte): Verwenden Sie zur
Speicherung der Sterne Vektoren (Typ vector<int>) oder dynamische Felder für die
Koordinaten und die Massen (oder bei Verwendung einer Struktur einen Vektor vom
Typ vector<Stern> oder ein dynamisches Feld vom Typ Stern). Legen Sie diese in
der benötigten Größe an.
• Erweiterung "OOP" (12 Punkte): Setzen Sie statt des Strukturtyps Stern eine Klasse
Stern ein. Um weiterhin den direkten Zugriff auf die Elemente der Klasse zu
ermöglichen, sollten diese als public deklariert werden. Die Klasse soll eine
Elementfunktion zufallsStern() enthalten, mit der die Zufallswerte für Koordinaten
und Masse berechnet werden, außerdem eine Elementfunktion ausgabe(), die
Koordinaten und Masse ausgibt. Diese kann zur Ausgabe der Tabelle (Grundaufgabe)
verwendet werden, allerdings muss die laufende Nummer dann vorher separat
ausgegeben werden.
Herunterladen