コード例 #1
0
        public static string SolutionBack(int n, string RusString, char[] alphabetSmall,
                                          char[] alphabetBig, CircularList circularListSmall, CircularList circularListBig) //Метод для замены символов входной строки на символы того же алфавита со сдвигом n
        {
            string result = "";                                                                                             //Переменная для хранения зашифрованной строки
            char   temp;                                                                                                    //Переменная для хранения текущего символа строки

            for (int i = 0; i < RusString.Length; i++)                                                                      //Перебор символов входной строки
            {
                temp = RusString[i];                                                                                        //Фиксация текущего символа
                if (alphabetBig.Contains(temp))                                                                             //Если символ входит в множество заглавных букв
                {
                    circularListBig.EcryptBack(n, temp, ref result);                                                        //Замена символа происходит с помощью списка с заглавными буквами
                }
                else
                if (alphabetSmall.Contains(temp))                                                                       //Если символ входит в множество прописных букв
                {
                    circularListSmall.EcryptBack(n, temp, ref result);                                                  //Замена символа происходит с помощью списка с прописными буквами
                }
                else                                                                                                    //Если символ является не буквой
                {
                    result += temp;                                                                                     //Замена не происходит
                }
            }
            return(result);
        }
コード例 #2
0
        static void Main(string[] args)
        {
            char[] alphabetSmall = { 'а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л',
                                     'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш','щ',  'ъ', 'ы', 'ь', 'э', 'ю', 'я' }; //Массив символов для букв русского алфавита
            char[] alphabetBig = { 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л',
                                   'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш','Щ',  'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я' };   //Массив символов для букв русского алфавита
            string RusString = "";                                                                                                         //Входная строка
            int    n = 0;                                                                                                                  //Сдвиг
            int    i, j;
            string result = "", choice = "";                                                                                               //Зашифрованная выходная строка, выбор пользователя о продолжении программы

            CircularList circularListSmall = new CircularList();                                                                           //Создание кругового списка для хранения прописных букв русского алфавита

            for (i = 0; i < alphabetSmall.Length; i++)
            {
                circularListSmall.Add(alphabetSmall[i]);                                                                //Заполнение списка
            }

            CircularList circularListBig   = new CircularList();                                                        //Создание кругового списка для хранения заглавных букв русского алфавита

            for (i = 0; i < alphabetBig.Length; i++)
            {
                circularListBig.Add(alphabetBig[i]);                                                                    //Заполнение списка
            }

            while (choice != "exit")                                                                                    //Пока не введена команда для завершения работы программы
            {
                Console.WriteLine("Добро пожаловать. Приложение зашифровывает текст, записанный с помощью русских букв, знаков препинания и других символов.\n" +
                                  "Заменяются буквы, символы остаются без изменений");

                Console.WriteLine("Введите длину сдвига");
                Input(out n, 1, 10000);                                                                                 //Ввод размера сдвига по алфавиту

                Console.WriteLine("Введите текст для шифрования");
                RusString = Console.ReadLine();                                                                         //Ввод строки, которую нужно зашифровать


                result = Solution(n, RusString, alphabetSmall, alphabetBig, circularListSmall, circularListBig);        //Вызов функции для начала процесса шифрования
                Console.WriteLine("Зашифрованный текст");
                Console.WriteLine(result);
                Console.WriteLine("Расшифрованный текст");
                result = SolutionBack(n, result, alphabetSmall, alphabetBig, circularListSmall, circularListBig);        //Вызов функции для начала процесса шифрования
                Console.WriteLine(result);

                Console.WriteLine
                    ("Для выхода из программы введите \"exit\". Для продолжения программы введите любую букву.");

                choice = Console.ReadLine();                                                                            //Ввод решения пользователя о продолжении работы в прогамме
            }
            //Завершение работы программы
        }