1. Praktische Übung Grundlagen Informatik (Übungsblatt C++ zur

Werbung
1. Praktische Übung Grundlagen Informatik
(Übungsblatt C++ zur Wiederholung für alle, denen langweilig wird)
Abschnitt 1: Wiederholung von Klassen und Objekten in C++
Entwickle ein Verwaltungssystem zur Patientenverwaltung für ein
Krankenhaus. Es soll folgende Möglichkeiten bieten:
–
Die persönlichen Daten des Patienten sollen sich speichern lassen. (zur
Vereinfachung: es sollen sich maximal 100 Patienten speichern lassen)
–
Des weiteren sollen sich Zimmer- und Bettnummer des Patienten
speichern lassen
–
Die Medikamention soll für jeden Patienten speicherbar sein (Medikament
und Dosis). Der Einfachheit halber sollen maximal 10 Medikamente
gespeichert werden können.
–
Es soll möglich sein, neue Patienten einzugeben und alle Daten
auszugeben.
Zusatzaufgabe:
–
Es soll möglich sein, jeden Patienten einzeln ausgeben zu lassen, seine
Daten zu ändern und den Datensatz zu löschen (eins nach dem Anderen
;-) Ansatz: Jeder Patient muss eindeutig identifizierbar sein!
–
Für ganz schnelle: Wie lässt sich, wenn ein Array verwendet wird, um die
Daten der Patienten zu speichern, sicher stellen, dass die alten Einträge
wieder verwendet werden? Gibt es eine bessere Lösung als ein Array?
Abschnitt 2: Rekursion
Rekursion, was war das gleich?
Rekursion bedeutet, dass sich eine Funktion selbst aufruft. So lassen sich
komplexe Probleme teilweise wesentlich einfacher lösen. Wichtig ist hier nur,
dass das Problem eine gleichbleibende Struktur hat.
Wichtig ist immer, dass es eine Abbruchbedingung gibt, die auf jeden Fall
früher oder später erreicht wird, sonst arbeitet der Computer bis zum Kältetod
des Universums.
Der Nachteil rekursiver Lösungen ist, dass sie teilweise nicht sofort einsichtig
sind, aber meist ist die sog. „iterative“ Lösung, also die, in der das Ergebnis in
einer Funktion berechnet wird, auch nicht wesentlich einsichtiger.
Aufgabe 1: Fibonacci-Zahlen
Wir beobachten eine Kaninchenpopulation, die sich in einer abgeschlossenen
Umgebung befindet, d.h. es können keine Kaninchen von aussen
hinzukommen und es können auch keine aus der Population verschwinden.
Am Anfang besteht diese Population aus einem geschlechtsreifen Paar
(o.E.d.A unterschiedlichen Geschlechts :-).
Jedes geschlechtsreife Paar wirft pro Monat ein weiteres Paar, das nach zwei
Monaten selbst geschlechtsreif wird. Wie viele Kaninchenpaare zählt die
Population nach einem Jahr?
Musterlösungen: www-user.tu-chemnitz.de/~jhil/uegi/
Viel Spaß! :-)
Fortsetzung
Aufgabe 2: Die Ackermann-Funktion
Die Ackermann-Funktion ist eine rekursive Funktion, die extrem schnell
wächst. Sie hat keinen weiteren praktischen Sinn, ausser dass man mit ihrer
Hilfe die Rechenleistung verschiedener Computer vergleichen kann.
Die Funktion ist folgendermaßen definiert:
A(0,m)
A(n,0)
A(n,m)
=m+1
= A(n – 1,1)
= A(n – 1,A(n,m – 1))
Dies ist zwar nicht die Originaldefinition, aber sie lässt sich schön leicht
umsetzen. Allerdings ist schon aus der Definition ersichtlich, dass man hier
keine allzu großen Werte einsetzen sollte, da die Berechnung dann extrem
lange dauert.
Hier noch eine Tabelle (Quelle: Wikipedia) mit den Werten, die die
Ackermannfunktion für bestimmte n,m liefert:
Die folgende Tabelle zeigt einige Funktionswerte für kleine Werte von n und m. Die
nicht vollständig ausgerechneten Werte sind zu groß, um sie dezimal darzustellen.
Werte von a(n,m)
n\
m
0
1
2
3
4
m
0
1
2
3
4
5
m+1
1
2
3
4
5
6
m+2
2
3
5
7
9
11
2m + 3
3
5
13
29
61
125
4
13
65533
¹
a(3,265536 a(3,a(
4,3)) 3 Terme)
− 3)
5
65533
a(4,6553
a(4,a(5,1))
3)
a(4,a(5,2) a(4,a(
)
5,3))
a(5,a(5,1
a(5,a(6,1))
))
¹eine Zahl mit 19729 Dezimalstellen
a(5,a(6,2) a(5,a(
)
6,3))
6
a(5,1)
(m +
Für ganz fleissige hier noch ein paar weitere rekursive Probleme:
–
das n-Damenproblem: n Damen sollen so auf einem Schachbrett platziert
werden, dass sie sich gegenseitig nich schlagen können.
–
Türme von Hanoi: Kennt sicher jeder... einige Scheiben, drei Stäbe, und
die Scheiben sollen vom ersten auf den letzten Stab, wobei eine Scheibe
nie auf einer kleineren liegen darf.
Musterlösungen: www-user.tu-chemnitz.de/~jhil/uegi/
Viel Spaß! :-)
Herunterladen