Zum Hauptinhalt springen

Aufgabe 13

Schwierigkeitsgrad: Mittel
Themen: Dynamischer Speicher (new/delete) Zeiger Klassen STL-Datenstrukturen (optional)

Sie sollen ein Programm schreiben, das Teilnehmer für einen Workshop verwaltet. Jeder Teilnehmer hat einen Namen (als std::string) und eine Teilnehmernummer (int). Anschließend soll nach Teilnehmern gesucht werden können. Die Größe des Workshops, also die Anzahl der Teilnehmer soll erst während der Runtime, also während das Programm bereits läuft, eingegeben werden.

Das Programm soll folgendermaßen strukturiert werden:

  1. Verwenden Sie eine Klasse Teilnehmer mit den privaten Membern: std::string name und int nummer. Fügen Sie dieser Klasse passende Konstruktoren, Setter- und Getter-Methoden hinzu.
  2. Der Benutzer gibt die Anzahl der Teilnehmer ein.
  3. Dynamisch wird ein Array von Teilnehmern reserviert. Beispiel:Teilnehmer* teilnehmer = new Teilnehmer[anzahl];
  4. Für jeden Teilnehmer werden Name und Teilnehmernummer eingelesen.
  5. Implementieren Sie eine Funktion void zeigeTeilnehmer(const Teilnehmer* teilnehmer, int anzahl), die alle Teilnehmer auflistet.
  6. Implementieren Sie eine Funktion Teilnehmer* sucheTeilnehmerNachNummer(Teilnehmer* teilnehmer, int anzahl, int nummer), die per Zeiger auf den Teilnehmer mit der gesuchten Nummer zeigt oder nullptr zurückgibt, wenn nicht gefunden. Der Benutzer soll auffordert werden, eine Teilnehmernummer einzugeben.
  7. Zum Schluss muss der dynamisch reservierte Speicher wieder freigegeben werden.

Hinweise

Nutzen Sie den Header <string> um std::string verwenden zu können.

Überlegen Sie sich warum das Teilnehmer Array hier dynamisch allokiert werden muss. Tipp: Die Begriffe Run-Time und Compile-Time spielen hier eine Rolle.

Wiederholen Sie idealerweise noch einmal den Unterschied zwischen Stack und Heap und versuchen Sie nachzuvollziehen warum dynamischer Speicher zum Schluss manuell freigegeben werden muss, um den Sinn dieser Aufgabe nachvollziehen zu können.