kshnkvn
@kshnkvn
yay ✌️ t.me/kshnkvn

Как работает шифр Цезаря в «С»?

Имеется задание на языке "С" разработать программу шифрования по алгоритму Цезаря. Сама формула вот:
ci = (pi + k) % 26
Собственно никак не мог применить данную формулу относительно приложения, начал искать примеры и наткнулся на следующие варианты:
if(isupper(text[i])){
                text[i] = (text[i] - 'A' + k) % 26;
                text[i] = text[i] + 'A';
} else{
                text[i] = (text[i] - 'a' + k) % 26;
                text[i] = text[i] + 'a';
}

Либо вот:
if(islower(text[i]))
{
                printf("%c", ((((text[i] - 97)+k)%26)+97));
}
else
{
                printf("%c", ((((text[i] - 65)+k)%26)+65));
}

Суть у них одна и та-же, НО. Пожалуйста, объясните мне, для чего сначала мы отнимаем 'A' (65й символ таблицы ASCII), а потом его прибавляем. Без этого программа тупо ничего не выводит, хотя и ошибок не выдает.
  • Вопрос задан
  • 2877 просмотров
Решения вопроса 1
alsopub
@alsopub
Отнимаем для того чтобы коды отсчитывались от 0 до 25.
Прибавляем, чтобы преобразовать код от 0 до 25 в символы от A до Z (и от a до z).
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы