Шифрование методом перестановки, исправить код - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. У меня есть задание написать шифр перестановками. То есть например мы вводим "ключ"- "банан". Из него генерируется другой ключ. В этом случае ключ будет 31425. Шифруемое сообщение будет разбиваться на блоки по длине ключа и изменяться по ключу, каждый блок отдельно, затем записываться в выходную строку. Проблема в том, что эту программу надо написать на c#, с которым я не очень дружу. И преподавателя по этому предмету у нас нет. И я запуталась с типами данных. Например как я буду генерировать ключ. Я полагаю, что я должна идти в цикле по алфавиту с начала до конца и каждую следующую букву алфавита искать во введенном "ключе". Если она найдена, то на место j, ставить цифру, которая идёт по порядку. Например буква "а". сначала j=2, мы присваиваем key[j]=1. потом идём дальше. Встечаем ещё одну "а". Теперь j=4, key[j]=2 и тд. Но. Как это всё объяснить программе? У меня получается что key типа string. Сначала она пустая. А записать посимвольно я её не могу.. Вот мой кусок кода:
            string input = "";
            string output = "";
            string inputkey = "";
            string key;
            string p1 = "";
            int c = 1;
            //создание русского алфавита
            char ch;
            int n = 0;
            char[] ru_mass = new char[32];
            for (int i = 1072; i <= 1103; i++)
            {
                ch = System.Convert.ToChar(i);
                ru_mass[n] = ch;
                n++;
            }
            //Console.WriteLine(ru_mass);

            Console.WriteLine("Введите сообщение");
            input = Console.ReadLine();
 
            Console.WriteLine("Введите ключ");
            inputkey = Console.ReadLine();
 
            if (input.Length < inputkey.Length)
                Console.WriteLine("длина ключа не может быть больше длины сообщения");
            else
            {
                for (int i = 0; i < ru_mass.Length; i++)
                    for (int j = 0; j < inputkey.Length; j++)
                    {
                        if (inputkey[j] == ru_mass[i])
                        {
                            key[j] = c;//вот здесь я не знаю как сделать. с-просто счётчик типа int
                            c++;
                        }
 
                    }
Помогите, пожалуйста, разобраться...

Решение задачи: «Шифрование методом перестановки, исправить код»

textual
Листинг программы
 
                for (int i = 0; i < ru_mass.Length; i++)
                {
                    for (int j = 0; j < inputkey.Length; j++)
                    {
                        if (inputkey[j] == ru_mass[i])
                        {
                            key.SetValue(c, j);
                            c++;
                        }
                    }
 
                }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы