C++-Programm die eine Cäser-Verschlüsselung ist aber mit zusätlichen verschiebungen erste zeichen um1 zweite um 2 zeichen und so weiter....?
Erstellen Sie ein C++-Programm, das eine Cäsar-Verschlüsselung mit einer zusätzlichen Verschiebung um den Index des Zeichens umsetzt. Das erste Zeichen soll also zusätzlich um eine Position verschoben werden, das zweite Zeichen zusätzlich um zwei Positionen und so weiter.
Das ist eine Cäser-verschlüsselung ohne zustätzlichen verschiebung
hoffe jemand kann mir helfen.
#include <iostream>
#include <string>
using namespace std;
void caesar();
void caesar (string kette){
int laenge,verschiebung;
laenge = kette.length();
int leaenge = kette.size();
cout<<" verschiebewert eingeben: ";
cin>>verschiebung;
for(int zaehler=0;zaehler<laenge;zaehler++)
{
cout<<static_cast<char>(kette[zaehler]+ verschiebung);
cout<<endl<<endl;
}
}
int main()
{
string eingabe;
cout<<"geben sie ein Wort ein das sie verschlüsseln moechten: ";
cin>>eingabe;
cout<<"sie haben "<<eingabe<<" eingegeben"<<endl;
caesar (eingabe);
return 0;
}
2 Antworten
Dein Programm erzeugt keine Verschlüsselung sondern gibt nur aber der n-ten Stelle den Text aus. Am besten erzeugst Du erst ein Hilfsarray von 1..26 mit dem verschobenen Alphabet.
Was genau ist deine Frage?
Das Program dazu hat einen Zeitaufwand von vielleicht 15 Minuten. Selbst wenn man nicht gut in C++ ist, ist das eine sehr dankbare Aufgabe.
Liebe Grüße, JutenMorgen!
In deinem Program ganz einfach indem du deinen Wert Verschiebung in der For-Schleife um den gewünschten Faktor erhöhst.
Beispiel:
for (int zaehler = 0; zaehler<laenge; zaehler++)
{
cout << static_cast<char>(kette[zaehler] + verschiebung);
cout << endl << endl;
verschiebung++; oder verschiebung *= 2;
}
Liebe Grüße, JutenMorgen!
ganau dannach suchte ich ganze zeit ich danke dir das du meine frage herzlich beantwortet hast
Müsste hier nicht irgendwo noch ein Modulo (%) rein, damit nicht (v. a. bei längeren Texten) irgendwann ein Overflow auftritt?
Erstens sehe ich nicht, wie in dem Program durch einen zu langen String ein Overflow entstehen könnte (ausser der string ist länger als INT_MAX) und zweitens wüsste ich nicht was ein Modulo-operator dabei helfen sollte.
Ich würde mir viel eher Gedanken darum machen, dass die caesar-methode vorne und hinten nicht funktioniert wie aufgetragen. Einfaches Beispiel: "z" als Eingabe und ">0" als Verschiebung ;)
Ah du meinst bei der Verschiebung einen Overflow?
Ja das könnte passieren. In dem Fall würde der int halt einfach negativ werden und von dort weiter machen. Die Gefahr könnte man mit einem unsigned int oder wenn man ganz sicher gehen möchte mit einem unsigned long long minimieren...
Meine genaue frage ist wie kann ich diese Cäser-Verschlüssleung erweitern den ersten buchstaben um 1 den zweiten um 2 und so weiter.