|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
07.04.2019, 14:15 | #1 |
Новичок
Джуниор
Регистрация: 07.04.2019
Сообщений: 2
|
Помогите пожалуйста сделать блок схему по программе шифрования методом Трисемуса
using System;
using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { char[] alphabet = "АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬ ЭЮЯ ,.".ToCharArray(); // Пытаемся вычислить размерность таблицы Console.WriteLine("Символов в алфавите: " + alphabet.Length); int rows = 0, columns; bool isValidTable; do { Console.Write("Количество колонок в таблице: "); isValidTable = int.TryParse(Console.ReadLine(), out columns) && columns > 1; if (!isValidTable) { Console.WriteLine("Необходимо ввести число больше 1"); } else { rows = alphabet.Length / columns; isValidTable &= rows > 1 && rows * columns == alphabet.Length; if (!isValidTable) { Console.WriteLine("Необходимо ввести число колонок таким образом, чтобы число строк таблицы было больше 1 и таблица могла вмещать в себе все символы алфавита"); } } } while (!isValidTable); // Пытаемся получить ключевое слово char[] keyWord; bool isValidKeyWord; do { Console.Write("Введите ключевое слово: "); keyWord = Console.ReadLine().ToUpper().Distin ct().ToArray(); isValidKeyWord = keyWord.Length > 0 && keyWord.Length <= alphabet.Length; if (!isValidKeyWord) { Console.WriteLine("Ключевое слово не может быть пустой строкой или содержать число уникальных символов больше размера алфавита"); } else { isValidKeyWord &= !keyWord.Except(alphabet).Any(); if (!isValidKeyWord) { Console.WriteLine("Ключевое слово не может содержать символы, которых нет в алфавите"); } } } while (!isValidKeyWord); // Создаем таблицу var table = new char[rows, columns]; // Вписываем в нее ключевое слово for (var i = 0; i < keyWord.Length; i++) { table[i / columns, i % columns] = keyWord[i]; } // Исключаем уникальные символы ключевого слова из алфавита alphabet = alphabet.Except(keyWord).ToArray(); // Вписываем алфавит for (var i = 0; i < alphabet.Length; i++) { int position = i + keyWord.Length; table[position / columns, position % columns] = alphabet[i]; } // Получаем сообщение, которое необходимо зашифровать string message; bool isValidMessage; do { Console.Write("Введите сообщение: "); message = Console.ReadLine().ToUpper(); isValidMessage = !string.IsNullOrEmpty(message); if (!isValidMessage) { Console.WriteLine("Сообщение не может быть пустой строкой"); } } while (!isValidMessage); // Создаем место для будущего зашифрованного сообщения var result = new char[message.Length]; // Шифруем сообщение for (var k = 0; k < message.Length; k++) { char symbol = message[k]; // Пытаемся найти символ в таблице for (var i = 0; i < rows; i++) { for (var j = 0; j < columns; j++) { if (symbol == table[i, j]) { symbol = table[(i + 1) % rows, j]; // Смещаемся циклически на следующую строку таблицы и запоминаем новый символ i = rows; // Завершаем цикл по строкам break; // Завершаем цикл по колонкам } } } // Записываем найденный символ result[k] = symbol; } // Выводим зашифрованное сообщение Console.WriteLine("Зашифрованное сообщение: " + new string(result)); Console.ReadLine(); } } } |
07.04.2019, 14:17 | #2 |
Новичок
Джуниор
Регистрация: 07.04.2019
Сообщений: 2
|
блок схема нужна только к основному алгоритму зашифровки
|
07.04.2019, 14:34 | #3 |
Старожил
Регистрация: 12.01.2011
Сообщений: 19,500
|
Вряд ли кто-то будет это делать за вас.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Помогите пожалуйста сделать блок-схему по программе (найти дату следующего дня) | Марфатри | Помощь студентам | 0 | 23.11.2014 16:00 |
Помогите пожалуйста построить блок схему по программе (срочно) | Алан1114 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 29.01.2014 01:32 |
Помогите пожалуйста сделать блок схему к программе. | Oleg43 | Фриланс | 6 | 10.01.2014 23:19 |
Помогите пожалуйста сделать блок схему к программе. | Oleg43 | Помощь студентам | 4 | 10.01.2014 22:22 |