Wie Verschiebechiffre (auch als Caesar-Verschlüsselung bekannt) umsetzen?



  • Hi,
    also ich soll für die Schule die Verschiebechiffre (auch als Caesar-Verschlüsselung bekannt) in einem BCB 6.0 Programm Umsetzen aber leider gelingt mir das so nicht !
    Also den Algortihmus für die Verschlüsselung lautet:

    vb(verschlüsselter buchstabe)=nvb(nicht verschlüsselter buchstabe)+ verschiebungsziffer
    hoffe das der so stimmt wie setze ich das um!
    (Infos brachte mich auch net weiter wie von wikipedia
    http://de.wikipedia.org/wiki/Verschiebechiffre#Funktionsweise )

    Weil der Bneutzer kann entweder en Text Laden (in eine Memo Box) oder er soll eine Reinschreiben in die Memo Box!

    kann mir jemand helfen!

    mfg
    schally



  • Wobei hast du denn Probleme? Was hast du schon gemacht?
    Wir werden dir hier kein fertiges Programm liefern.



  • schally schrieb:

    vb(verschlüsselter buchstabe)=nvb(nicht verschlüsselter buchstabe)+ verschiebungsziffer

    Da hast du doch schon die Umrechnungsvorschrift - jetzt mußt du das Ergebnis nur noch in das Zeichenintervall 'A'..'Z' (bzw. 'a'..'z') reinschieben (Stichwort: Modulo). Für einen längeren Text wendest du die Verschlüsselung in einer Schleife auf jedes Zeichen an.



  • nee will ich auch gar net!
    sry falls das so rüber gekommen ist!

    also mein erstes Problem ist das ich aus dem Memo Feld nicht an die Einzelnen Buchstaben dran komm!

    Braunstein schrieb:

    AnsiString test = mem_ver_text->Text

    da schreibnt er mir ja alles in diese Variable aber ich komm ja net an die einzelnen Buchstaben dran wie bei einem Feld!

    und wenn ich es in ein Feld schreib bringt es mir auch net viel!

    CStoll schrieb:

    schally schrieb:
    vb(verschlüsselter buchstabe)=nvb(nicht verschlüsselter buchstabe)+ verschiebungsziffer
    Da hast du doch schon die Umrechnungsvorschrift - jetzt mußt du das Ergebnis nur noch in das Zeichenintervall 'A'..'Z' (bzw. 'a'..'z') reinschieben (Stichwort: Modulo). Für einen längeren Text wendest du die Verschlüsselung in einer Schleife auf jedes Zeichen an.

    Das war ja auch net schwer drauf zu kommen!
    aber ich komm einfahc net drauf wie ich an die Zeichen kommen kann!

    mfg
    schally



  • Lies doch mal die Hilfe zu AnsiString. Du hast dort genau wie bei einem normalen Array über den Indexoperator [] Zugriff auf die einzelnen Zeichen.
    siehe auch unsere FAQ zum Thema AnsiString
    http://www.c-plusplus.net/forum/viewtopic-var-t-is-39299.html



  • @Braunstein

    Sry aber ich versteh es net ganz!

    Wie kann aus dem Memo Feld den Text in ein Variable schreiben und wo ich an jede einzelnen Buchstaben dran komme weil in einem Feld bringt mir dies ja nicht und
    [/cpp]z.B. :

    String test = "Hallo";

    char einbuchstabe = test[1];

    (einbuchstabe = H)[cpp]
    das weis ich ja !

    aber es hilft mir net weiter!

    mfg
    schally



  • Hi,

    du hast doch Quasi schon gemacht was du machen willst, nur das du "Hallo" durch den Inhalt des TMemo ersetzen musst ...

    AnsiString test = mem_ver_text->Text 
    char einbuchstabe = test[1]; 
    
    //einbuchstabe ist dann halt der erste Buchstabe des Inhalts deines Memo's
    

    mfg, Micha!



  • Micha schrieb:

    AnsiString test = mem_ver_text->Text //1
    char einbuchstabe = test[1];//2
    
    //einbuchstabe ist dann halt der erste Buchstabe des Inhalts deines Memo's
    //1 Das is klar
    /*2 Hier muss ich ja noch ne Schleife drumrum bauen oder?
    weil soll ich sonst die ganzen buchstaben da rein bekommen?*/
    

    oder versteh ich das nicht richtig !

    mfg
    schally



  • Hallo,

    richtig, du baust dir ne Schleife darum.

    mfg, Micha!



  • Deswegen sagte ich ja, schau dir die Hilfe zu AnsiString an. Da gibt es viele Memberfunktionen. Unter anderen auch eine, die dir die Länge deines Strings zurückgibt (Length). Dann hast du ja schon alles für deine Schleife.

    AnsiString test = mem_ver_text->Text;
    int len = test.Length();
    for( int i=1; i<=len; ++i)
    {
    // nun dein Algorithmus
    


  • Hi,
    das mit der Funktion Length() benutze ich ja auch!
    aber ich werd nun mal diese schleife benutzen!

    Nachtrag:
    Sry aber ich versteh es einfach net wie kann ich aus dem Memo-Feld etwas in eine andere Variable schreiben und auf jeden einzelnen Buchstaben zugreifen kann!
    kann mal irgendjemand ne beispiel reinstellen!
    damit ich es versteh!

    mfg
    schally



  • Hier ist doch ein Beispiel dafür?

    guest schrieb:

    AnsiString test = mem_ver_text->Text 
    char einbuchstabe = test[1]; 
    
    //einbuchstabe ist dann halt der erste Buchstabe des Inhalts deines Memo's
    


  • Verbinde doch mal die beiden dir bisher genannten Beispiele

    AnsiString test = mem_ver_text->Text 
    
    for (int i = 0; i < test.length(); i++)
    {
       char einbuchstabe = test[i];  //Zugriff auf jeden einzelnen Buchstaben
    }
    

    mfg, Micha (_guest_)



  • AnsiString test = mem_ver_text->Text
    char einbuchstabe = test[1];
    
    //einbuchstabe ist dann halt der erste Buchstabe des Inhalts deines Memo's
    

    Ja dann muss aber char einbuchstabe en feld sein oder?

    mfg
    schally



  • Siehe oben...

    jezz versteh ich nich worauf du hinaus willst. Array?? Du hast bereits das Stringarray (test).

    mach - nur aus Spaß und um es zu verstehen - mal folgendes:

    AnsiString test = mem_ver_text->Text;
    
    for (int i = 0; i < test.length(); i++)
    {
       ListBox1->Items->Add(test[i]);  
    }
    


  • Da hast du wohl AnsiString und string durcheinander geworfen. Korrekt sehe das so aus. Aber das hatten wir doch alles schon einmal.

    AnsiString test = mem_ver_text->Text;
    
    for (int i = 1; i <= test.Length(); i++)
    {
    // etc.
    

    @schally
    char ist kein Einbuchstabenfeld sondern ein einzelner Buchstabe.



  • ja aber ich verstehe es nicht kann mir den keiner en bsp machen wo aus dem was aus ner memo komp in eine variable geschrieben wird und ich auf jeden buchstaben zugrteifen kann!

    mfg
    schally



  • braunstein schrieb:

    Da hast du wohl AnsiString und string durcheinander geworfen. Korrekt sehe das so aus. Aber das hatten wir doch alles schon einmal.

    Sorry, du hast natürlich recht! Entschuldigung 🙂



  • schally schrieb:

    Funktioniert nicht !
    aber ich komm auch net drauf warum!

    mfg
    schally

    wat ne Aussage 😮

    Poste mal bitte das, was du jetzt geschrieben hast :)!



  • @schally
    Wir haben dir genau dieses Beispiel doch schon ein paar Mal gegeben.

    AnsiString test = mem_ver_text->Text; //schreibt den Inhalt vom Memo in die Variable test
    
    for (int i = 1; i <= test.Length(); i++) //eine Schleife von 1 bis zur Länge des Strings
    {
       char ch = test[i]; //Schreiben des Buchstabens Nr. i in die Variable ch
    }
    

Anmelden zum Antworten