Jednym z prostych szyfrów przedstawieniowych jest szyfr polegający na zamianie miejscami znaków na pozycjach parzystych i nieparzystych (pierwszy znak zamieniamy miejscami z drugim, trzeci z czwartym itd.). Napisz program szyfrujący i program deszyfrujący tą metodą. Przyjmij, że tekst jawny składa się z parzystej liczby liter

Odpowiedź :

Odpowiedź:

#include <iostream>

#include <string>

int main() {

std::string word;

std::cout << "Podaj wyraz do zaszyfrowania\n";

std::cin >> word;

for(int i = 0; i < word.size() - 1; i++){

if(i % 2 == 0){

char tmp = word[i + 1];

word[i + 1] = word[i];

word[i] = tmp;

}

}

std::cout << "Zaszyfrowany wyraz to: " << word;

return 0;

}

Wyjaśnienie:

Jeśli liczba jest parzysta, czyli idziemy od początku wyrazu, bo w informatyce liczymy od 0, a 0 uznajemy za patrzyste, to zamieniamy znak na tym miejscu ze znakiem na kolejnym miejscu. Można by użyć std::swap, ale nie wiem czy to mieliście i czasem też warto poćwiczyć rzeczy "analogowo". I w tym przypadku szyfrator i deszyfrator będzie wyglądał identycznie, więc nie wiem czemu jest rozdzielenie na te przypadki.