C/C++

Написать код расшифровки шифра Цезаря на C++

Написать программу расшифровки шифра Цезаря (на С++) для своего варианта (Ючпф ьцюгкэж у люопгж юьцёгкш. Ю лпошйхк поушьэмпшшкй цщгкож, у эк — хщлёцк. Ю чёьцу шпэ ошк, ю ьцщмк шпэ ъыпопцк.) и получить результат расшифровки.
#include <iostream>
#include <string>
#include <iomanip>
using namespace std;
bool is_alpha(char ch) {
if (ch >= 'A' && ch <= 'Z' || ch >= 'a' && ch <= 'z') return true;
if (ch >= 'А' && ch <= 'Я' || ch >= 'а' && ch <= 'я') return true;
return false;
}
string splus(const string& line) {
auto s = line;
for (auto& ch : s) {
if (ch == ' ') continue;
if (is_alpha(ch)) {
if (ch == 'Z' || ch == 'z') ch -= 25;
else if (ch == 'Я' || ch == 'я') ch -= 31;
else ++ch;
} else {
++ch;
}
}
return s;
}
string sminus(const string& line) {
auto s = line;
for (auto& ch : s) {
if (ch == ' ') continue;
if (is_alpha(ch)) {
if (ch == 'A' || ch == 'a') ch += 25;
else if (ch == 'А' || ch == 'а') ch += 31;
else --ch;
} else {
--ch;
}
}
return s;
}
string encode(const string& line, int shift) {
auto s = line;
for (int i = 0; i < shift; ++i) s = splus(s);
return s;
}
string decode(const string& line, int shift) {
auto s = line;
for (int i = 0; i < shift; ++i) s = sminus(s);
return s;
}
int main() {
const auto shift = 13;
system("chcp 1251 > nul");
string line = "Ючпф ьцюгкэж у люопгж юьцёгкш. Ю лпошйхк поушьэмпшшкй цщгкож, у эк — хщлёцк. Ю чёьцу шпэ ошк, ю ьцщмк шпэ ъыпопцк.";
cout << line << '\n'; // исходная
line = encode(line, shift);
cout << line << '\n'; // кодированная
line = decode(line, shift);
cout << line << '\n'; // декодированная
system("pause > nul");
}
Ф. Степанцов
Ф. Степанцов
56 480
Лучший ответ
Умей слушать и будешь услышан. У бедняка единственная лошадь, и та — кобыла. У мысли нет дна, у слова нет предела
Денис Пехов
Денис Пехов
54 781
....))))) ....))))) А у Николая Веселухи нет тормоза, он фигачит сразу по памяти любой исходник :)
Так у Цезаря спроси ;)
RA
Ravshan Abzhaparov
37 945
Ф. Степанцов Если только лицом в салат))