Предмет: Информатика,
автор: 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.
Ответы
Автор ответа:
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;
}
Похожие вопросы
Предмет: Физика,
автор: poligli
Предмет: Алгебра,
автор: varvaradoronina268
Предмет: Алгебра,
автор: skryzhevska
Предмет: Математика,
автор: magentavindetta
Предмет: Математика,
автор: Jan00000