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; }
|