Projekt 1 : "Geheime Nachrichten" (Teil 3)

4. Das fertige Programm

Nachdem wir nun wissen, wie die Cäsar-Methode und die zyklische Modulo-Verschiebung funktionieren, kann die Verschlüsselung im Projekt fertiggestellt werden. Am Anfang der main()-Funktion wird in dieser finalen Version noch ein wenig ASCII-Art in Form eines Schlosses auszugeben. Warum? Weil es nett aussieht! 😉

Zeile 1 : 'v' oder 'e'
Zeile 2 : Text zum Verschlüsseln
#include <iostream>
#include <string>

using namespace std;

int main()
{
    cout << "     .--------. " << endl;
    cout << "    / .------. \\ " << endl;
    cout << "   / /        \\ \\ " << endl;
    cout << "   | |        | |" << endl;
    cout << "  _| |________| |_" << endl;
    cout << ".' |_|        |_| '." << endl;
    cout << "'._____ ____ _____.'" << endl;
    cout << "|     .'____'.     |" << endl;
    cout << "'.__.'.'    '.'.__.'" << endl;
    cout << "'.__  |GEHEIM|  __.'" << endl;
    cout << "|   '.'.____.'.'   |" << endl;
    cout << "'.____'.____.'____.'" << endl;
    cout << "'.________________.'" << endl;
    cout << endl;

    // TEIL 1: Ver- oder Entschlüsselung auswählen
    string input;
    cout << "Ver- oder Entschlüsseln? (v/e): " << endl;
    getline(cin, input);

    bool encode = false; // später ENTschlüsseln
    if (input == "v")
    {
        cout << "Text zum VERschlüsseln: " << endl;
        encode = true;
    }
    else if (input == "e")
    {
        cout << "Text zum ENTschlüsseln: " << endl;
    }
    else
    {
        cout << "Ungültige Eingabe!" << endl;
        exit(EXIT_FAILURE); // Fehlercode melden
    }

    // TEIL 2: Textzeichen nacheinander verarbeiten
    string output;
    getline(cin, input);
    int caesar = 1; // Geheime Code-Zahl

    int cnt = 0;
    while (cnt < input.size())
    {
        // TEIL 3: Erzeugen von Geheim-Nachrichten
        // Buchstabe zu Zahl umwandeln
        int ascii = (int)input[cnt];

        // Zahl um festen Wert verschieben ...
        int new_ascii;
        if (encode == true) // Verschlüsseln
        {
            new_ascii = (ascii + caesar - 32) % 95 + 32;
        }
        else // Entschlüsseln
        {
            // FEHLT NOCH
        }

        // Zahl zu Buchstabe rückwandeln
        char code = (char)new_ascii;

        // Neuen Buchstaben an Ergebnis anhängen
        output.push_back(code);

        cnt++;
    }
    cout << "Nachricht: " << output << endl;

    return EXIT_SUCCESS; // wahlweise auch 0
}

Herzlichen Glückwunsch, denn damit ist die Entwicklung des Verschlüsselungs-Programms beendet und du hast dein erstes Projekt erfolgreich abgeschlossen!

Im nächsten Abschnitt findest du einige Aufgaben, mit denen du den Funktionsumfang des Programms erweitern (z.B. die Entschlüsselung programmieren) und deine neu gelernten Fähigkeiten in der Praxis testen kannst. Viel Spaß dabei!