2016-12-07 6 views
-1

Ich arbeite an einem Übungsprogramm für die Verschlüsselung und Entschlüsselung. Ich habe kürzlich versucht, mir C++ beizubringen, also bitte, ertragen Sie mit mir.Wie verschlüsselt man eine Textdatei mit Rotation?

Ich möchte in eine Textdatei einlesen, den Benutzer fragen, wie viele Zeichen er/sie drehen möchte, und dann entsprechend rotieren.

Ich habe eine Menge Probleme beim Versuch, dies zu tun. Schließlich habe ich etwas funktionierenden Code für diesen Teil.

Mein Programm rotiert jetzt tatsächlich und druckt das richtige rotierte Zeichen aus. Bei einigen Zeichen wird jedoch ein} oder sogar ein chinesisches Zeichen gedruckt. Ich muss auch Zahlen für Daten wie 2016 usw. drehen. Ich habe auch keine Leerzeichen.

Ich weiß in meinem Programm, ich drucke direkt ch, das ist wahrscheinlich ein großer Teil des Fehlers. Ich bin mir nicht sicher, wie Leerzeichen zwischen den Wörtern eingefügt werden sollen, und stelle sicher, dass das richtige gedrehte Zeichen verwendet wird.

Ich werde die Funktion unten veröffentlichen. Mein Programm ist viel größer und ich habe an anderen Teilen gearbeitet, aber ich werde es nicht alles posten, also ist es prägnanter. Vielen Dank im Voraus, ich schätze die Hilfe sehr. Ich habe tagelang versucht, das herauszufinden und brauche die Hilfe.

+0

Ich sehe keine Drehung. 'z '+ rotNum' rollt gerade vom Ende weg ... – John3136

+0

@ john3136 Ja, das ist Teil meines Problems. Es rotiert, zum Beispiel von A nach D, wenn du 3 drehst. Aber am Ende fällt es ab. Wie repariere ich das? –

+0

Sie sollten eine if-Anweisung haben, die prüft, ob die Wörter [i] [j] + rotNum zwischen a und z liegen. Wenn es dann nur ch gleich ist, wenn nicht, dann setze ch gleich (words [i] [j] + rotNum) - 'a' (dies setzt voraus, dass rotNum kleiner als 26 ist. Wenn es mehr als 26 ist set rotNum = rotNum% 26 das entfernt überschüssige Spins –

Antwort

0

Es sieht für mich aus, dass Sie den Modulus (%) -Operator benötigen. So etwas wie dies funktionieren sollte:

string rotEnc(int rotNum,vector<string> sentence) 
{ 
    stringstream ss; 
    for (int i = 0; i < sentence.size(); i++) 
    { 
     for (int j = 0; j < sentence[i].length(); j++) 
     { 
      char c = tolower(sentence[i][j]); 

      char ch = 'a' + ((rotNum + (c - 'a')) % 26); 
      ss << ch; 
     } 
     ss << ' '; 
    } 
    ss << ".\n"; 
} 

das Konzept der einzigen Zweck zu zeigen, habe ich rotNum und die String-Vektor-Parameter. Die aufrufende Funktion sollte diese erstellen. Ich habe es auch den Vektor als Satz zurückgeben lassen.

Verwandte Themen