Praktikumsanleitung
Praktikum 5
Aufgabe 1
Zuerst wiederholen wir rekursive Funktionen aus der Vorlesung.
Was bedeutet Rekursion?
Implementieren Sie die nachfolgenden Funktionen in den Dateien math.h
bzw. math.cpp
.
Schreiben Sie wieder geeignete assert
-Tests in der main
-Funktion (siehe auch letztes Praktikum). Die main
landet diesmal in der aufgabe1.cpp
.
Funktion int faculty(int n)
Funktion int fib(int n)
Aufgabe 2
Machen Sie sich nochmal theoretisch mit Iteratoren vertraut.
Zeichen Sie auf einem Blatt Papier die folgenden Dinge auf:
- Vektor
v
mit den Elementen 1, 2, 1, 5 und 2. - Zeichen Sie Pfeile an, wo
v.begin()
undv.end()
hinzeigen. - Angenommen Sie rufen
std::find(v.begin(), v.end(), 2)
auf.- Wo zeigt der Iterator
it
hin? - Wo zeigt der Iterator nach
std::find(std::next(it), v.end(), 2)
hin? - Wo zeigt der Iterator nach abermals
std::find(std::next(it), v.end(), 2)
hin?
- Wo zeigt der Iterator
- Angenommen Sie rufen
std::find(v.begin(), v.end(), 3)
auf.- Wo zeigt der Iterator
it
hin? - Wo zeigt der Iterator nach
std::find(std::next(it), v.end(), 3)
hin?
- Wo zeigt der Iterator
Aufgabe 3
Öffnen Sie aufgabe3.cpp
und lösen Sie die in den Aufgaben in den Quelltextkommentaren.
Der Ansatz ist dabei egal, also Sie können for-each, std::algorithm
und beliebige andere Dinge verwenden.
Beim programmieren ist es erstmal wichtig darüber nachzudenken, wie man das Problem so herunterbricht, dass es der Computer versteht.
Nachfolgend nochmal die Aufgaben:
- Wandeln Sie alle negativen Zahlen in positive um
- Zählen Sie, wie viele Zahlen größer als 5 sind
- Löschen Sie alle geraden Zahlen
- Bilden Sie die Summe über alle verbleibenden Zahlen
Aufgabe 4
Schreiben Sie die folgenden drei Funktionen.
Diesmal wird kein Struktogramm zur Verfügung gestellt.
Aufgabe 4.1
Schreiben Sie eine Funktion namens doppelt
Diese Funktion akzeptiert eine Zahl als Parameter und gibt das doppelte dieser Zahl zurück.
Aufgabe 4.2
Schreiben Sie eine Funktion namens neg_sum
.
Diese Funktion akzeptiert einen vector
als Parameter. Diese Funktion negiert alle Zahlen und berechnet deren Summe.
Die Summe wird im Anschluss zurückgegeben.
Aufgabe 4.3 (*)
Schreiben Sie eine Funktion namens hamming
.
Diese Funktion berechnet die Hamming-Distanz. Dafür werden zwei Strings als Parameter benötigt.
Wenn die Stringlänge unterschiedlich ist, soll “-1” zurückgegeben werden.
Ansonsten soll gezählt werden, wie viele Zeichen unterschiedlich sind.
Beispiel:
- Hello und Hallo haben eine Distanz von 1.
- Haus und Dach haben eine Distanz von 3.