Praktikum 3

Erstellen Sie für jede der Aufgaben eine neue C++-Datei und fügen Sie diese als neue Anwendung zu der CMakeLists.txt hinzu:

add_executable(name_der_anwendung
    name_der_anwendung.cpp
)

Hinweis: Falls Ihnen die Befehle nicht mehr einfallen schauen Sie bei Vorlesung 2 in das Quellcode-Archiv

Aufgabe 1

Zum warm werden behandeln wir nochmal if-Bedingungen.

Insbesondere wiederholen wir nochmal && und ||.

  1. Fragen Sie den Nutzer nach einer Zahl
  2. Geben Sie einen geeigneten Text aus, wenn die Zahl positiv und ungerade ist
  3. Geben Sie einen geeigneten Text aus, Wenn die Zahl null oder eins ist

Aufgabe 2

Wir haben in der Vorlesung über Über- und Unterlauf (overflow und underflow) gesprochen.

  • Was versteht man unter diesen Begriffen?
  • In welchen Situationen kann ein Überlauf auftreten?
  • Warum sollten Über- und Unterläufe vermieden werden?

Aufgabe 3

Machen Sie sich nochmal mit der Syntax von Funktionen und Lambda-Ausdrücken vertraut.

Wissen Sie noch die Bedeutung von const und int vs. int&?

  1. Schreiben Sie eine Funktion:
    • Der Funktion wird ein vector<int> übergeben
    • Die Anzahl an Elementen mit Wert 0 soll gezählt werden
    • Die Anzahl wird zurückgegeben
  2. Beschriften Sie die Funktion mit einem geeigneten Dokumentationskommentar (Stichwort: javadoc)
  3. Rufen Sie die beschriebene Funktion von der main-Funktion aus auf und geben Sie den Wert auf der Konsole aus.
  4. Zählen Sie die Anzahl an Elementen im Vektor mittels des Algorithmus std::count (Header <algorithm> nicht vergessen)
  5. (*) Anstatt 0 soll der Wert als zusätzlicher Parameter übergeben werden. Wie das mit Lambda-Funktionen geht haben wir noch nicht behandelt. Beschränken Sie sich daher auf Ihre Funktion.

Aufgabe 4

  1. Schreiben Sie eine Funktion:
    • Der Funktion wird ein vector<string> übergeben
    • Die Anzahl an Zeichenketten mit Großbuchstaben an erster Stelle sollen gezählt werden (siehe dazu auch Praktikum 2, Aufgabe 3)
    • Die Anzahl wird zurückgegeben
  2. Beschriften Sie die Funktion mit einem geeigneten Dokumentationskommentar (Stichwort: javadoc)
  3. Rufen Sie die beschriebene Funktion von der main-Funktion aus auf und geben Sie den Wert auf der Konsole aus.
  4. Zählen Sie die Anzahl an Elementen im Vektor mittels eines geeigneten Algorithmus’ und Lambda-Ausdruck. Siehe dazu auch https://www.cplusplus.com/reference/algorithm/. Tipp: Es ist die Variante von count, die eine Prädikatfunktion akzeptiert.
  5. (*) Das Verhalten der Funktion aus 1. soll mit einem zusätzlichen bool gross-Parameter geändert werden können: Wenn true ist das Verhalten wie oben. Wenn false werden stattdessen die Kleinbuchstaben gezählt.

Aufgabe 5

  1. Schreiben Sie eine Funktion:
    • Der Funktion wird ein vector<int> übergeben
    • Alle Elemente im Vektor werden negiert
    • Es gibt keine Rückgabe. Der Vektor wird direkt modifiziert.
  2. Beschriften Sie die Funktion mit einem geeigneten Dokumentationskommentar (Stichwort: javadoc)
  3. Rufen Sie die beschriebene Funktion von der main-Funktion aus auf und geben Sie den Wert auf der Konsole aus.
  4. (*) Verwenden Sie stattdessen std::transform

Aufgabe 6 (*)

Machen Sie sich mit einigen anderen Algorithmen vertraut:

  1. Der Algorithmus std::fill(begin, end, wert) ersetzt alle Elemente im Bereich mit wert. Befüllen Sie einen Vector mit 42.
  2. Der Algorithmus std::any_of(begin, end, pred) akzeptiert ein Prädikat und gibt einen bool zurück. Sie kann also in if-Bedingungen verwenden werden. Die Rückgabe ist true wenn mindestens ein Element das Prädikat erfüllt. Schreiben Sie ein Programm, dass einen Text ausgibt, wenn mindestens ein Element in einem Vektor gerade ist.
Zuletzt geändert: Dienstag, 13. April 2021, 02:10