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.