Откопал код шифра Цезаря на C++ Собственно, вот он:
string cipherOfCaesarEnglish(string word, int shift)
{
for (int i = 0; i < word.length(); i++)
{
if (word[i] >= 'a' && word[i] <= 'z') word[i] = 'a' + (word[i] - 'a' + (26 - shift)) % 26;
else if (word[i] >= 'A' && word[i] <= 'Z') word[i] = 'A' + (word[i] - 'A' + (26 - shift)) % 26;
}
return word;
}
Мне не очень понятно, как он работает, и это нужно исправить. Помогите пожалуйста
if (word[i] >= 'a' && word[i] <= 'z')
если символ word[i]
является какой то буквой из последовательности от а
по z
, т.е. является маленькой буквой из альфавита, то присваиваем значение:
символу 'a'
можем прибавить цифру не больше чем 25
, чтобы не выходить за пределы альфавита, поэтому:
word[i] = 'a' + к % 26; // k%26 всегда меньше 26
где к
равен word[i] - 'a' + (26 - shift)
, т.е это дистанция между символом и первой буквой альфавита +
дистанция между количеством букв в альфавите и заданным числом. Та же логика, если это большая буква...
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Решил проверить код из книги ООП в С++ Лафоре но в Visual Studio не получается его повторить
Написал простой векторный редактор и сохранение изображения идет в текстовый документКак сделать чтобы при нажатии на соответствующую...
Есть два приложения, App1 и App2App2 - стартует из первого по средствам _com_ptr_t m_pApp2
Задача: Написать программу для форматирования исходного кода С++Т