#include <iostream>
#include <string>
#include <cctype>
// Funkcja szyfrująca szyfrem Cezara
std::string szyfrCezara(const std::string &tekst, int przesuniecie) {
std::string wynik;
wynik.reserve(tekst.size());
for (char znak : tekst) {
if (std::isalpha(static_cast<unsigned char>(znak))) {
char baza = std::islower(static_cast<unsigned char>(znak)) ? 'a' : 'A';
// Przesunięcie w zakresie 0-25
char zaszyfrowany = static_cast<char>(
(znak - baza + przesuniecie + 26) % 26 + baza
);
wynik.push_back(zaszyfrowany);
} else {
// Znaki niealfabetyczne pozostają bez zmian
wynik.push_back(znak);
}
}
return wynik;
}
int main() {
// Dane wejściowe
std::string wyraz1 = "poczekajnamnie";
std::string wyraz2 = "poufnytekst";
int przesuniecie = 3; // klasyczne przesunięcie Cezara
// Szyfrowanie
std::string szyfr1 = szyfrCezara(wyraz1, przesuniecie);
std::string szyfr2 = szyfrCezara(wyraz2, przesuniecie);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8Y2N0eXBlPgoKLy8gRnVua2NqYSBzenlmcnVqxIVjYSBzenlmcmVtIENlemFyYQpzdGQ6OnN0cmluZyBzenlmckNlemFyYShjb25zdCBzdGQ6OnN0cmluZyAmdGVrc3QsIGludCBwcnplc3VuaWVjaWUpIHsKICAgIHN0ZDo6c3RyaW5nIHd5bmlrOwogICAgd3luaWsucmVzZXJ2ZSh0ZWtzdC5zaXplKCkpOwoKICAgIGZvciAoY2hhciB6bmFrIDogdGVrc3QpIHsKICAgICAgICBpZiAoc3RkOjppc2FscGhhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KHpuYWspKSkgewogICAgICAgICAgICBjaGFyIGJhemEgPSBzdGQ6OmlzbG93ZXIoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcj4oem5haykpID8gJ2EnIDogJ0EnOwogICAgICAgICAgICAvLyBQcnplc3VuacSZY2llIHcgemFrcmVzaWUgMC0yNQogICAgICAgICAgICBjaGFyIHphc3p5ZnJvd2FueSA9IHN0YXRpY19jYXN0PGNoYXI+KAogICAgICAgICAgICAgICAgKHpuYWsgLSBiYXphICsgcHJ6ZXN1bmllY2llICsgMjYpICUgMjYgKyBiYXphCiAgICAgICAgICAgICk7CiAgICAgICAgICAgIHd5bmlrLnB1c2hfYmFjayh6YXN6eWZyb3dhbnkpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIC8vIFpuYWtpIG5pZWFsZmFiZXR5Y3puZSBwb3pvc3RhasSFIGJleiB6bWlhbgogICAgICAgICAgICB3eW5pay5wdXNoX2JhY2soem5hayk7CiAgICAgICAgfQogICAgfQogICAgcmV0dXJuIHd5bmlrOwp9CgppbnQgbWFpbigpIHsKICAgIC8vIERhbmUgd2VqxZtjaW93ZQogICAgc3RkOjpzdHJpbmcgd3lyYXoxID0gInBvY3pla2FqbmFtbmllIjsKICAgIHN0ZDo6c3RyaW5nIHd5cmF6MiA9ICJwb3Vmbnl0ZWtzdCI7CiAgICBpbnQgcHJ6ZXN1bmllY2llID0gMzsgLy8ga2xhc3ljem5lIHByemVzdW5pxJljaWUgQ2V6YXJhCgogICAgLy8gU3p5ZnJvd2FuaWUKICAgIHN0ZDo6c3RyaW5nIHN6eWZyMSA9IHN6eWZyQ2V6YXJhKHd5cmF6MSwgcHJ6ZXN1bmllY2llKTsKICAgIHN0ZDo6c3RyaW5nIHN6eWZyMiA9IHN6eWZyQ2V6YXJhKHd5cmF6MiwgcHJ6ZXN1bmllY2llKTsKCiAgIAogICAgcmV0dXJuIDA7Cn0=