Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void Caesar(string word, int shift, out string ciphertext)
- {
- shift = shift % 26;
- //Сокращаем циклическое смещение до вещественных для нас значений (в пределах алфавита)
- ciphertext = "";
- //задаем строку, в которую будем записыывать каждый преобразованный символ по порядку
- for (int j = 0; j < word.Length; j++)
- //Цикл будет повторяться, пока в слове остались непреобразованные буквы
- {
- char block = word[j];
- //Выделяем нужную для нас букву по порядку (слева направо, индекс начинается с 0)
- if ((block < 97) || (block > 122))
- //проверяем является ли буква - строчной и латинской, т.е. удовлетворяет ли диапазону соответсвтующих значений в таблице ASCII
- {
- Console.WriteLine("wrong");
- Environment.Exit(0);
- }
- //Если символ не соответствует условию задачи -> на экран выводится сообщение "wrong", выполнение алгоритма прерывается
- char sum = (char)(block + shift);
- //рассчитываем принадлежность смещения диапазону допустимых значений, если переход выходит за рамки верхней или нижней границы, выполним переход (зацикливание)
- if (sum > 122)
- {
- sum = (char)(sum - 122);
- block = (char)(sum + 96);
- ciphertext += block;
- //"перполнение" относительно верхней границы допустимых значений -> перенос на нижнюю границу
- }
- else if (sum < 97)
- {
- sum = (char)(97 - sum);
- block = (char)(123 - sum);
- ciphertext += block;
- //"перполнение" относительно нижней границы допустимых значений -> перенос на верхнюю границу
- }
- else if ((sum >= 97) && (sum <= 122))
- {
- ciphertext += sum;
- }
- //"Переполнения" не обнаружено - программа выполняется в штатном режиме
- }
- Console.WriteLine(ciphertext);
- //Вывод результата
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement