Имеется задание на языке "С" разработать программу шифрования по алгоритму Цезаря. Сама формула вот:
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), а потом его прибавляем. Без этого программа тупо ничего не выводит, хотя и ошибок не выдает.