Advertisement
Guest User

Untitled

a guest
Nov 13th, 2019
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.04 KB | None | 0 0
  1. static void Caesar(string word, int shift, out string ciphertext)
  2.         {
  3.             shift = shift % 26;
  4.             //Сокращаем циклическое смещение до вещественных для нас значений (в пределах алфавита)
  5.             ciphertext = "";
  6.             //задаем строку, в которую будем записыывать каждый преобразованный символ по порядку
  7.             for (int j = 0; j < word.Length; j++)
  8.             //Цикл будет повторяться, пока в слове остались непреобразованные буквы
  9.             {
  10.                 char block = word[j];
  11.                 //Выделяем нужную для нас букву по порядку (слева направо, индекс начинается с 0)
  12.  
  13.                 if ((block < 97) || (block > 122))
  14.                 //проверяем является ли буква - строчной и латинской, т.е. удовлетворяет ли диапазону соответсвтующих значений в таблице ASCII
  15.                 {
  16.                     Console.WriteLine("wrong");
  17.                     Environment.Exit(0);
  18.                 }
  19.                 //Если символ не соответствует условию задачи -> на экран выводится сообщение "wrong", выполнение алгоритма прерывается
  20.                 char sum = (char)(block + shift);
  21.                 //рассчитываем принадлежность смещения диапазону допустимых значений, если переход выходит за рамки верхней или нижней границы, выполним переход (зацикливание)
  22.                 if (sum > 122)
  23.                 {
  24.                     sum = (char)(sum - 122);
  25.                     block = (char)(sum + 96);
  26.                     ciphertext += block;
  27.                     //"перполнение" относительно верхней границы допустимых значений -> перенос на нижнюю границу
  28.                 }
  29.                 else if (sum < 97)
  30.                 {
  31.                     sum = (char)(97 - sum);
  32.                     block = (char)(123 - sum);
  33.                     ciphertext += block;
  34.                     //"перполнение" относительно нижней границы допустимых значений -> перенос на верхнюю границу
  35.                 }
  36.                 else if ((sum >= 97) && (sum <= 122))
  37.                 {
  38.                     ciphertext += sum;
  39.                 }
  40.                 //"Переполнения" не обнаружено - программа выполняется в штатном режиме
  41.             }
  42.             Console.WriteLine(ciphertext);
  43.             //Вывод результата
  44.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement