Napisz program, który umożliwia szyfrowanie i deszyfrowanie podanego ciągu
znaków przy użyciu szyfru Cezara (który jest szczególnym przypadkiem szyfru
podstawieniowego monoalfabetycznego). Szyfrowanie ma realizować funkcja szyfruj,
która przyjmuje 2 parametry: pierwszy to łańcuch znaków, natomiast drugi
to przesunięcie alfabetu. Zamianie mają podlegać jedynie litery alfabetu angielskiego.
Wynikiem funkcji ma być zaszyfrowany tekst.
Przykład deklaracji funkcji:
string szyfruj(string tekst, unsigned int przesuniecie);
string deszyfruj(string tekst, unsigned int przesuniecie);
Przykład:
Szyfr Cezara z przesunięciem 1 dokonuje zamiany wg. schematu:
a -> b
b -> c
...
z -> a
Szyfr Cezara z przesunięciem 3 dokonuje zamiany wg. schematu:
a -> d
b -> e
...
z -> d
#include <iostream>
#include <string>
using namespace std;
string szyfruj(string tekst, unsigned int przesuniecie);
string deszyfruj(string tekst, unsigned int przesuniecie);
int main()
{
unsigned int liczba;
string tekst;
cout<<"Witaj w programie szyfrujacym i deszyfrujacym \npodany tekst za pomoca szyfru Cezara."<<endl;
cout<<"Podaj tekst ktory ma zostac zaszyfrowany."<<endl;
getline(cin,tekst);
cout<<"Podaj przesuniecie jakie ma zostac uzyte."<<endl;
cin>>liczba;
cout<<szyfruj(tekst,liczba)<<endl;
cin.ignore();
cout<<"Podaj tekst ktory ma zostac zdeszyfrowany."<<endl;
getline(cin,tekst);
cout<<"Podaj przesuniecie."<<endl;
cin>>liczba;
cout<<deszyfruj(tekst,liczba)<<endl;
cin.get();
return 0;
}
string szyfruj(string tekst, unsigned int przesuniecie)
{
for(int i=0;i<tekst.size();i++)
{
tekst[i]=tolower(tekst[i]);
if(tekst[i]>='a' && tekst[i]<='z')
{
tekst[i]+=przesuniecie;
if(tekst[i]>'z') tekst[i]-=25; //litera a=97, z=122 : 122-97=25
}
}
return tekst;
}
string deszyfruj(string tekst, unsigned int przesuniecie)
{
for(int i=0;i<tekst.size();i++)
{
tekst[i]=tolower(tekst[i]);
if(tekst[i]>='a' && tekst[i]<='z')
{
tekst[i]-=przesuniecie;
if(tekst[i]<'a') tekst[i]+=25;
}
}
return tekst;
}
Offline