Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <string>
- #include <locale>
- std::wstring funcSt(std::wstring str, int shift)
- {
- // число, прибавляемое к каждой русской букве
- const int small_shift = U'я' + shift + 1;
- const int big_shift = U'Я' + shift + 1; // они одинаковы
- // число букв в алфавите - нужно для случаев, когда после смещения буквы выходят из рус. алфавита
- const int small_div = U'я' - U'а' + 1; // == 32
- const int big_div = U'Я' - U'А' + 1; // == 32
- for (auto &x: str) {
- if (U'а' <=x and x <= U'я')
- x = (x + small_shift) % small_div + U'а';
- else if (U'А' <=x and x <= U'Я')
- x = (x + big_shift) % big_div + U'А';
- }
- return str;
- }
- int main()
- {
- // из-за русских букв, в винде не обязательно
- std::locale current_locale("");
- std::locale::global(current_locale);
- // закодированная строка и правильная первая буква
- std::wstring str, letter;
- std::getline(std::wcin, str);
- std::getline(std::wcin, letter);
- std::wcout << funcSt(str, letter[0] - str[0]);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement