C++ :: Aufgabe #27

4 Lösungen Lösungen öffentlich

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:

2 Kommentare
vote_ok
von sbx320 (300 Punkte) - 03.01.2013 um 14:52 Uhr
Quellcode ausblenden C-Code
#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;
}
vote_ok
von progdoc (2220 Punkte) - 03.01.2013 um 22:30 Uhr
Quellcode ausblenden C-Code
#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 ;
}
1x
vote_ok
von Sone (2570 Punkte) - 04.01.2013 um 11:06 Uhr
Quellcode ausblenden C-Code
#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;
}
vote_ok
von ThePain36 (250 Punkte) - 07.10.2015 um 15:40 Uhr
Quellcode ausblenden C-Code
#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");
}
2102647

Du scheinst einen AdBlocker zu nutzen. Ich würde mich freuen, wenn du ihn auf dieser Seite deaktivierst und dich davon überzeugst, dass die Werbung hier nicht störend ist.