ROT n-Kryptographie



  • Hey Leute,

    Ich habe aus Übungszwecken mal ein leichtes ROT-Programm geschrieben.
    Der Benutzer soll einen Text eingeben, welcher verschlüsselt werden soll und anschließend soll das Proggi einfach noch Fragen um wie viele Stellen jedes Zeichen in der ASCII-Tabelle verschoben werden soll.
    Komischerweise jedoch wird wenn ganze Sätze eingegeben werden immer nur das erste Wort ausgegeben.

    Zudem ist des öfteren das Fail-Bit im Stream gesetzt, was darauf hindeutet, dass irgewo noch ein Fehler sein muss 🙂

    cya
    David

    PS:

    Code:

    #include <iostream>
    #include <fstream>
    #include <sstream>
    #include <string>
    using namespace std;
    string verschluessele(string,int);
    int main(void)
    {
       string wort="";
       int q=0;
       cout << "Bitte geben Sie ein Wort ein, welches verschluesselt werden soll:" << endl;
       cin >> wort; 
       cin.sync();     
       cout << "Bitte geben Sie jetzt noch an, was fuer eine\nROT-Verschluesselung Sie erhalten wollen" << endl;
       cin >> q; 
       /*
       cout << cin.good();
       cout << cin.bad();
       cout << cin.fail();
       */
       cout << verschluessele(wort,q) << endl;
       getchar();
       system("Pause");
    }    
    string verschluessele(string s, int e)
    {
        int c=0;
        string newstring="";
        while(c < s.length())
        {        
           s[c]+=e;   
           c++;       
        }        
        return(s);
    }
    


  • 777 schrieb:

    Komischerweise jedoch wird wenn ganze Sätze eingegeben werden immer nur das erste Wort ausgegeben.

    Verständlich - op>> verwendet alle WhiteSpaces als Trennzeichen. Wenn du eine komplette Textzeile einlesen willst, nimm lieber getline().

    Zudem ist des öfteren das Fail-Bit im Stream gesetzt, was darauf hindeutet, dass irgewo noch ein Fehler sein muss 🙂

    Das failbit wird höchstwahrscheinlich beim "cin>>q;" gesetzt, weil der Rest des Eingabesatzes noch im Tastaturpuffer wartet - und das nächste Zeichen nicht als Zahl erkannt werden kann.


Anmelden zum Antworten