Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 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
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вряд ли кто-то будет это делать за вас.
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите пожалуйста сделать блок-схему по программе (найти дату следующего дня) Марфатри Помощь студентам 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