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:

  1. Vektor v mit den Elementen 1, 2, 1, 5 und 2.
  2. Zeichen Sie Pfeile an, wo v.begin() und v.end() hinzeigen.
  3. 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?
  4. 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?

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:

  1. Wandeln Sie alle negativen Zahlen in positive um
  2. Zählen Sie, wie viele Zahlen größer als 5 sind
  3. Löschen Sie alle geraden Zahlen
  4. 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.
Last modified: Monday, April 26, 2021, 6:37 PM