Александр Куценко
S:07:35:11 13.12
R:07:35:15 13.12
функция code_sym нужна для того, чтобы сделать смещение вперед или назад относительно кода символа sym на offset позиций
в кодировке цезаря при кодировании идет сдвиг символа на +n позиций, значит для расшифровки нужно сдвинуть на -n позиций.
функция prepare_keys нужна для того, чтобы подготовить массив сдвигов
на вход подается файл с текстом - словами, разделенными пробелами. для каждого слова из этого файла считается сумма кодов всех символов каждого слова (остаток от деления на 128 берется так как в ASCII всего 128 символов). Таким образом, после выхода из функции будет сформирован массив сдвигов
процедуры caesar_code и decode нужны для шифровки и расшифровки файла. для того чтобы файл зашифровать/расшифровать, нужно сначала подготовить массив ключей. Далеее, нужно пройтись по каждому слову из шифруемого текста и для каждого символа этого слова сделать смещение на +n позиций, где n берется из массива ключей. если слов в тексте больше, чем ключей в массиве, обход массива ключей начинаем заново
расшифровка аналогична, только делаем смещение не +n позиций для каждого символа, а -n
ну и собственно в мейне все эти функции шифровки расшифровки вызываем. файлы много раз открывал и закрывал чисто чтобы убедиться, что указатель внутри файла всгда стоял на начале (чтобы получать правильный размер файла)