C++ :: Aufgabe #27
4 Lösungen

Mit Caesar Chiffre ent- und verschlüsseln
Anfänger - C++
von Dome
- 03.01.2013 um 01:30 Uhr
Schreiben Sie ein Programm, indem Sie mit Hilfe der Caesar Chiffre einen beliebigen Text ent- und verschlüsseln können. Zuvor muss der Text und die Anzahl der Verschiebung angegeben werden. Groß- und Kleinschreibung muss nicht beachtet werden.
Konsolenausgabe:
Geben Sie den Text ein: Beispielwort
Um wie viele Stellen soll verschoben werden: 1
Ergebnis: Cfjtqjfmxpsu
Lösungen:

#include <iostream> #include <string> std::string caesarChiffre(std::string& str, unsigned int uiMove) { uiMove = uiMove % 26; std::string out; for(auto i: str) { out += (i + uiMove); } return out; } void main() { unsigned int uiMove; std::string strText; std::cout << "Geben Sie den Text ein:"; std::cin >> strText; std::cout << "Um wie viele Stellen soll verschoben werden: "; std::cin >> uiMove; std::cout << "Ergebnis: " << caesarChiffre(strText, uiMove) << std::endl; }

#include <string> #include <iostream> #include <algorithm> #include <cctype> class MyTransform { private : int shift ; public : MyTransform( int s ) : shift( s ) { } char operator( )( char c ) { static std::string letters( "abcdefghijklmnopqrstuvwxyz" ) ; std::string::size_type found = letters.find(tolower( c )) ; int shiftedpos = ( static_cast<int>( found ) + shift ) % 26 ; char shifted = letters[shiftedpos] ; return shifted ; } } ; int main( ) { std::string input ; std::cout << "Welcher Text soll verschluesselt werden ?\n" ; getline( std::cin , input ) ; std::cout << "Verschiebung ?\n" ; int myshift = 0 ; std::cin >> myshift ; std::transform ( input.begin( ) , input.end( ) , input.begin( ) , MyTransform( myshift ) ) ; std::cout << "Nach der Verschlüsselung:\n" ; std::cout << input << std::endl ; return 0 ; }

#include <iostream> #include <string> #include <iterator> int main() { using namespace std; string str; getline(cin, str); std::cout << "Stellen: "; auto shift = *std::istream_iterator<unsigned>(std::cin); auto shift_for_all = [&str, shift](char base, char end) { for(auto& c : str) if(c >= base && c <= end) c = (c - base + shift) % (end - base) + base; }; shift_for_all('A', 'Z'); shift_for_all('a', 'z'); shift_for_all('0', '9'); std::cout << "Digits and characters shifted: " << str; }

#include <iostream> using namepsace std; int main(void) { char eingabe[120]; int stellen,size; cout<<"Geben Sie den Text ein: "; cin>>eingabe; cout<<"Um wie viele Stellen soll verschoben werden: "; cin>>stellen; size=strlen(eingabe); for(int i=0;i<size;i++) { eingabe[i]+=stellen; } cout<<eingabe<<endl; system("Pause"); }