Praktikumsanleitung

Praktikum 10

Bevor Sie die Aufgaben lösen werfen Sie immer zuerst einen Blick in den Inhalt der Textdateien.

Die Dateien sind alle im Ordner text. Dieser muss also beim Pfad immer mit angegeben werden!

Aufgabe 1: Hallo Welt!

Aufgabe 1.1

Lesen Sie durch Aufruf von std::getline(stream, string-ref) die erste Zeile aus der Datei hallo.txt und geben Sie diese auf der Konsole aus.

Zu beachten bei Visual Studio (nicht Code): Das Arbeitsverzeichnis ist hier der Anwendungspfad, Sie müssen daher ../../../ vor den Pfad schreiben, also z.B. ../../../text/hallo.txt. Alternativ können Sie die launch.vs.json-Datei (die man für das Setzen der Kommandozeilenparameter nutzt) um folgende Zeile erweitern (direkt unter args): ,"currentDir": "${workspaceRoot}", dann funktioniert auch text/hallo.txt.

Aufgabe 1.2

Ergänzen Sie das Programm nun um die folgenden Bestandteile:

Geben Sie mittels einer Schleife auch die restlichen Zeilen aus der Datei auf der Konsole aus.

Als Schleife können Sie ein ähnliches Konstrukt wie in der Vorlesung verwenden. In der Vorlesung hatten wir while (in >> num). std::getline lässt sich auf die gleiche Weise im while-Ausdruck verwenden, da diese Funktion true zurückgibt, solange die Datei noch nicht zu Ende ist.

Aufgabe 1.3

Die zu lesende Datei soll nun als Kommandozeilenparameter übergeben werden (siehe 05_ifstream_args aus der Vorlesung).

Den Parameter können Sie über das integrierte Terminal oder args in der launch.json übergeben.

Probieren Sie auch eine der anderen Textdateien aus.

Aufgabe 2: Zahlen

Aufgabe 2.1

Die Datei zahlen.txt enthält mehrere Zahlen.

Lesen Sie alle Zahlen in einen vector ein und berechnen und geben Sie aus:

  • Die Summe
  • Das arithmetische Mittel (Durchschnitt)

Aufgabe 2.2

Sortieren Sie die Zahlen und schreiben Sie die Zahlen sortiert in die Datei zahlen_sorted.

Aufgabe 3: Hallo Statistik!

Kopieren Sie Ihre Lösung von Aufgabe 1 in Aufgabe 3 hinein und ergänzen Sie diese mit folgender Statistik:

Zählen Sie die Anzahl an Groß- und Kleinbuchstaben in der übergebenen Datei und geben Sie die Anzahl auf der Konsole aus. Sie können dafür std::isupper bzw. std::islower verwenden.

Aufgabe 4 (*)

Die Datei hiscore.txt enthält eine Rekordtabelle für ein Computerspiel.

Der Aufbau ist folgendermaßen:

  • Zeile 1: Spielername
  • Zeile 2: Punktzahl

Dies wird bis zum Dateiende wiederholt. Die Datei ist bereits nach der Platzierung sortiert.

Erzeugen Sie eine neue Klasse Platz bestehens aus zwei Feldern name und punkte. Legen Sie für die Felder geeignete Datentypen fest.

Lesen Sie in Ihrer main die Datei ein und schreiben Sie die gelesen Daten in einen std::vector<Platz> (also ein Vektor, der mehrere Platzierungen enthält).

Geben Sie im Anschluss die Werte aus dem Vektor auf der Konsole aus.

Zuletzt geändert: Dienstag, 8. Juni 2021, 14:13