Assignment Chef icon Assignment Chef
All German tutorials

Programming lesson

C++ Dateioperationen und Funktionen: Zufallszahlen, Preiskalkulation & mehr – Tutorial für CS 1081

Lerne in diesem Tutorial, wie du in C++ Dateien liest, Funktionen schreibst und Zufallszahlen generierst – perfekt für Assignment #06 der Computer Science 1081. Mit aktuellen Beispielen aus Gaming und Finanzen.

C++ Dateioperationen Random.txt einlesen C++ Funktionen Preiskalkulation C++ Markup berechnen fallingDistance C++ Münzsimulation C++ C++ Zufallszahlen Computer Science 1081 Assignment C++ Tutorial Deutsch C++ für Anfänger C++ Übungen C++ Datei lesen und auswerten C++ while-Schleife C++ ifstream C++ srand time

Einführung: Dateioperationen und Funktionen in C++

In diesem Tutorial lernst du die Grundlagen von Dateioperationen und Funktionen in C++ – genau das, was du für Assignment #06 der Computer Science 1081 brauchst. Wir gehen Schritt für Schritt durch die vier Programme: vom Einlesen einer Random.txt über die Berechnung von Summe und Durchschnitt, die Preiskalkulation mit Markup, die Fallhöhe bei Gravitation bis hin zur Münzsimulation. Alles mit aktuellen Bezügen, die dich interessieren: Stell dir vor, du analysierst die Zufallszahlen einer Gaming-Lootbox oder berechnest den Preis eines NFTs mit Aufschlag – genau diese Konzepte wendest du hier an.

Programm 1: Datei einlesen und Statistiken berechnen

Das erste Programm öffnet eine Textdatei mit Zufallszahlen, liest alle Zahlen ein und berechnet Anzahl, Summe und Durchschnitt. Das ist wie bei einer Umfrageauswertung in der Schule: Du hast viele Antworten und willst den Mittelwert wissen. In der Praxis nutzen Finanzapps solche Berechnungen, um Aktienkurse zu analysieren.

Schritt 1: Datei öffnen und auf Erfolg prüfen

#include <iostream>
#include <fstream>
using namespace std;

int main() {
    const string FILENAME = "Random.txt";
    ifstream inputFile(FILENAME);
    
    if (!inputFile) {
        cout << "Fehler beim Öffnen der Datei!" << endl;
        return 1;
    }
    // ...
}

Die Konstante FILENAME speichert den Dateinamen – so kannst du ihn leicht ändern. Der ifstream öffnet die Datei zum Lesen. Mit !inputFile prüfst du, ob das Öffnen geklappt hat. Das ist wie eine WLAN-Verbindungsprüfung in einer Messenger-App: Ohne Verbindung keine Daten.

Schritt 2: Zahlen einlesen und verarbeiten

int count = 0;
double sum = 0.0;
int number;

while (inputFile >> number) {
    count++;
    sum += number;
}

double average = sum / count;

cout << "Anzahl der Zahlen: " << count << endl;
cout << "Summe: " << sum << endl;
cout << "Durchschnitt: " << average << endl;

inputFile.close();
return 0;
}

Die while-Schleife liest jede Zahl ein, erhöht den Zähler und addiert zur Summe. Das ist wie bei einem Streaming-Dienst, der die Anzahl der gestreamten Minuten zählt – nur mit Zahlen. Am Ende schließt du die Datei mit close().

Tipp: Teste immer, ob die Datei im richtigen Ordner liegt – am besten neben deiner .cpp-Datei. Falls nicht, erscheint die Fehlermeldung.

Programm 2: Preiskalkulation mit Funktion

Hier schreibst du eine Funktion calculateRetail, die den Verkaufspreis aus Einkaufspreis und Markup-Prozentsatz berechnet. Stell dir vor, du kaufst ein Skin in einem Spiel für 10 Euro und willst ihn mit 50% Gewinn weiterverkaufen – der Verkaufspreis wäre 15 Euro. Genau das macht die Funktion.

Funktion definieren

double calculateRetail(double wholesale, double markupPercent) {
    if (wholesale < 0 || markupPercent < 0) {
        return -1; // Fehlerwert
    }
    double markupDecimal = markupPercent / 100.0;
    return wholesale * (1 + markupDecimal);
}

Die Funktion prüft auf negative Werte und gibt dann den berechneten Preis zurück. Wichtig: Die Funktion gibt nur den Wert zurück, ohne etwas auszugeben – das macht die main-Funktion.

Hauptprogramm mit Eingabe

int main() {
    double wholesale, markupPercent;
    cout << "Einkaufspreis: ";
    cin >> wholesale;
    cout << "Markup in Prozent: ";
    cin >> markupPercent;
    
    double retail = calculateRetail(wholesale, markupPercent);
    if (retail < 0) {
        cout << "Negative Werte nicht erlaubt!" << endl;
    } else {
        cout << "Verkaufspreis: $" << fixed << setprecision(2) << retail << endl;
    }
    return 0;
}

Mit fixed und setprecision(2) stellst du sicher, dass der Preis immer zwei Nachkommastellen hat – wie bei einer Banking-App.

Programm 3: Fallhöhe bei Gravitation

Die Formel d = 0.5 * g * t² berechnet die Fallstrecke in Metern. Stell dir vor, du lässt einen Gegenstand in einem Spiel fallen – die Engine berechnet die Position genau so. Oder in der Physik-Engine eines Rennspiels.

Funktion schreiben

#include <iomanip>

double fallingDistance(double time) {
    const double G = 9.8;
    return 0.5 * G * time * time;
}

int main() {
    cout << fixed << setprecision(2);
    cout << "Sekunden  Distanz" << endl;
    cout << "===============================" << endl;
    for (int t = 1; t <= 10; t++) {
        double dist = fallingDistance(t);
        cout << t << "          " << dist << " Meter" << endl;
    }
    return 0;
}

Die Schleife ruft die Funktion für die Zeiten 1 bis 10 auf und gibt die Distanz aus. Die Ausgabe zeigt zwei Nachkommastellen – wichtig für wissenschaftliche Berechnungen.

Programm 4: Münzsimulation mit Zufallszahlen

Hier simulierst du einen Münzwurf mit Zufallszahlen. Das ist die Basis für Glücksspiele, RNG in Games oder Entscheidungsfindung in Apps. Du nutzt rand() und srand() mit dem aktuellen Zeitstempel als Seed – so entstehen jedes Mal andere Ergebnisse.

Seed setzen und Funktion definieren

#include <cstdlib>
#include <ctime>

void coinToss() {
    int result = 1 + rand() % 2;
    if (result == 1)
        cout << "Kopf";
    else
        cout << "Zahl";
}

int main() {
    unsigned seed = time(0);
    srand(seed);
    
    int tosses;
    cout << "Wie viele Würfe? ";
    cin >> tosses;
    
    for (int i = 1; i <= tosses; i++) {
        cout << i << ": ";
        coinToss();
        cout << endl;
    }
    return 0;
}

Die Funktion coinToss gibt nichts zurück, sondern gibt direkt „Kopf“ oder „Zahl“ aus. Das ist wie ein Chatbot, der eine Ja/Nein-Frage beantwortet – ohne Rückgabewert, nur mit Ausgabe.

Zusammenfassung und nächste Schritte

Du hast jetzt gelernt, wie man Dateien einliest, Funktionen mit Rückgabewerten und ohne Rückgabewert schreibt, und Zufallszahlen generiert. Diese Konzepte sind die Basis für viele echte Anwendungen: von der Datenanalyse in Excel-ähnlichen Programmen über Preisberechnungen in E-Commerce bis zur Simulation in Spielen. Übe die Programme, indem du die Datei Random.txt selbst erstellst oder die Münzsimulation für 1000 Würfe laufen lässt – dann siehst du, wie oft Kopf kommt (etwa 50%). Viel Erfolg bei deinem Assignment!