Предмет: Информатика, автор: olalala11

СРОЧНО НА С++!
Шифр Цезаря даю 15 баллов!
В шифре Цезаря каждый символ, являющийся буквой латинского алфавита, заменяется другим символом, k
-м по счёту в алфавите после данного. Если этот символ выходит за границы списка, то берётся соответствующий символ из начала строки. Например, для k=3
символ A
заменяется на D
, символ B
— на E
, символ C
— на F
... символ Z
— на C
. Аналогично строчные буквы заменяются на строчные буквы. Все остальные символы не меняются.

Дана строка, зашифруйте её при помощи шифра Цезаря для k=3
.

Входные данные

Дана строка из символов с ASCII кодами от 32
до 127
, длиной не больше 10000
символов.

Выходные данные

Выведите ответ задачи.

Примеры
Ввод
In a hole in the ground there lived a hobbit.

вывод
Lq d kroh lq wkh jurxqg wkhuh olyhg d kreelw.

Ответы

Автор ответа: pupkinll2016
1

Ответ:

#include <iostream>

#include <string>

std::string caesarCipher(const std::string& input, int shift) {

std::string result = "";

for (char ch : input) {

if (isalpha(ch)) {

char base = (ch >= 'A' && ch <= 'Z') ? 'A' : 'a';

char shifted = base + (ch - base + shift) % 26;

result += shifted;

} else {

result += ch;

}

}

return result;

}

int main() {

std::string input;

getline(std::cin, input);

int shift = 3;

std::string encrypted = caesarCipher(input, shift);

std::cout << encrypted << std::endl;

return 0;

}

Похожие вопросы
Предмет: Алгебра, автор: varvaradoronina268
Предмет: Алгебра, автор: skryzhevska
Предмет: Математика, автор: magentavindetta
Предмет: Математика, автор: Jan00000