Caesar Verschlüsselung



  • Hallo Leute,
    bräuchte Hilfe bei einem Arbeitsauftrag für die Schule. Ich soll in C eine automatische Caesar Verschlüsselung mit einer festen verschiebungsweite erstellen. Haben gerade erst mit C angefangen bin daher noch nich sehr gut aber mein Professor meinte ich soll mit einem Array und charArray arbeiten.
    Danke für eure Hilfe im Vorraus
    hausi


  • Mod

    Was ist deine Frage?



  • Du brauchst kein Array, ließ einfach in einer Schleife zeichenweise die Datei, verschiebe jedes Zeichen und schreibe es in eine neue.

    http://www.cplusplus.com/reference/cstdio/fgetc/
    http://www.cplusplus.com/reference/cstdio/fputc/



  • Ok, danke schonmal aber ich hatte vergessen zu sagen, dass ich dass vorgegebene wort nicht aus einer datei lese sondern es beim starten des programms vorgebe und am ende das verschlüsselte wort ausgebe...
    hausi



  • Aha, also keine Frage.



  • SG1 schrieb:

    Aha, also keine Frage.

    ?



  • Dann brauchst du in etwa sowas:

    #include <stdio.h>
    #include <ctype.h>
    
    int const verschiebung = 13;
    
    int main(int argc, char **argv)
    {
        int c;
        int i = 0;
        if (argc < 2)
        {
            puts("Zu wenig Parameter!");
            return 1;
        }
    
        while ((c = *(argv[1]+i)) != '\0')
        {
            if (isalpha(c)) /* Nur wenn das Zeichen ein Buchstabe ist */
                fputc((((c - 'a') + verschiebung) % 26) + 'a', stdout);
            i++;
        }
    
        return 0;
    }
    


  • Das Problem bei deinem Thread ist, dass du bisher keinerlei Eigenleistung gezeigt hast und scheinbar auch nicht die vollständige Aufgabenstellung.

    https://www.c-plusplus.net/forum/136013 << einfach mal durchlesen



  • Danke für eure bisherige Hilfe...
    Ich hab heute versucht eine charArray zu erstellen in welchem ich die buchstaben des wortes abspeicher und so erhöhe dass sie später den richtigen buchstaben enthalten...
    Ist leider nicht geglückt...
    Hat jemand eine idee ob und falls ja wie es funktionieren könnte?
    hausi



  • Hier machen nur Deppen die Hausaufgaben für andere Leute.
    Präsentiere deinen bisherigen Code und stelle eine konkrete Frage.



  • hausi schrieb:

    Danke für eure bisherige Hilfe...
    Ich hab heute versucht eine charArray zu erstellen in welchem ich die buchstaben des wortes abspeicher und so erhöhe dass sie später den richtigen buchstaben enthalten...
    Ist leider nicht geglückt...
    Hat jemand eine idee ob und falls ja wie es funktionieren könnte?
    hausi

    Hast du mein Beispiel verstanden? Es ist doch trivial, statt dem Kommandozeilenparameter ein Array zu verwenden.



  • wechlol.vb schrieb:

    Hast du mein Beispiel verstanden? Es ist doch trivial, statt dem Kommandozeilenparameter ein Array zu verwenden.

    Für einen Anfänger nicht.
    argv ist ein char** und das sieht ganz anders aus als ein char[].
    Denn gerade diese Zeiger sind am Anfang verdammt verwirrend.

    hausi schrieb:

    Hat jemand eine idee ob und falls ja wie es funktionieren könnte?

    Klar haben wir.
    Wurde auch schon mehrfach im Forum behandelt.

    Aber was genau ist dein Problem. Zeig deinen bisherigen Code.
    Dann können wir sagen was daran falsch ist.



  • hausi schrieb:

    Ok, danke schonmal aber ich hatte vergessen zu sagen, dass ich dass vorgegebene wort nicht aus einer datei lese sondern es beim starten des programms vorgebe und am ende das verschlüsselte wort ausgebe...
    hausi

    Es werden Strings (Texte) an dein Programm übergeben, wenn du es aufrufst:
    1. String: Programmname (uninteressant für dich)
    2. der erste durch den Benutzer übergebene Parameter

    Aufruf auf der Konsole z.B. programm.exe Hallo
    

    Wie kommst du nun an die Texte?
    Dafür gibts in der main Funktion die Parameter argc und argv.

    int main(int argc, char** argv)
    

    argc gibt an, wieviele Parameter übergeben wurden. Auf Stelle 0 ist der Programmname, auf Stelle 1 der erste Parameter.

    Du schaust, ob also mindestens zwei Texte übergeben wurden und kannst dann mit diesen Texten arbeiten. Z.B. auf der Konsole ausgeben.

    if(argc>=2)
    {
       printf("argv[0]=%s, argv[1]=%s",argv[0],argv[1]);
    }
    

    Genausogut könntest du dir aus argv[1][i] mit Index i jeweils ein Zeichen des Textes rausholen und die Verschlüsselung anwenden.
    Das Ergebnis schreibst du dann sofort auf die Konsole raus, z.B. mit putc.


Log in to reply