С++
Написать код программы для реализации алгоритма шифрования "Шифр Цезаря"
Шифр Цезаря — это вид шифра подстановки, в котором каждый символ в открытом тексте заменяется символом, находящимся на некотором постоянном числе позиций левее или правее него в алфавите.
Обязательное условие – украинский алфавит
Чтобы было меньше проблем, используйте большие буквы.
Answers & Comments
Ответ:
#include <iostream>
#include <string>
using namespace std;
string encrypt(string plaintext, int shift) {
string ciphertext = "";
for (int i = 0; i < plaintext.length(); i++) {
char c = plaintext[i];
if (c >= 'А' && c <= 'Я') {
c = (c - 'А' + shift) % 33 + 'А';
}
ciphertext += c;
}
return ciphertext;
}
string decrypt(string ciphertext, int shift) {
string plaintext = "";
for (int i = 0; i < ciphertext.length(); i++) {
char c = ciphertext[i];
if (c >= 'А' && c <= 'Я') {
c = (c - 'А' - shift + 33) % 33 + 'А';
}
plaintext += c;
}
return plaintext;
}
int main() {
string plaintext, ciphertext;
int shift;
cout << "Введите текст для шифрования: ";
getline(cin, plaintext);
cout << "Введите сдвиг: ";
cin >> shift;
// шифрование
ciphertext = encrypt(plaintext, shift);
cout << "Зашифрованный текст: " << ciphertext << endl;
// расшифрование
plaintext = decrypt(ciphertext, shift);
cout << "Расшифрованный текст: " << plaintext << endl;
return 0;
}
Объяснение: