Доработка шифра Цезаря - C#

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

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

помогите разобраться и дописать прогу немного непойму. 1. Как дописать в form1 чтоб было шифрование и дешифрирование текста из стоки texBox1 в texBox2.(Ошибка в коде де шифрования) 2.Как можно дописать чтоб не только английские буквы были и цифры но еще и русские. Вот код шифрования:
{
                    n = str1.Length;
                    //textBox1.Text = ""; 
                    textBox2.Text = "";
                    for (int i = 0; i < n; i++)
                    {
                        k = (int)str1[i];
                        k = k + index;
                        if (k > 122) k = k - 26;
                        textBox2.Text = textBox2.Text + ((char)(k)).ToString();
 
                   }
}
Код де шифрования:
private void button2_Click(object sender, EventArgs e)
        {
            int k, n, index;
            string str1;
            str1 = textBox1.Text;
            if (textBox3.Text != "")
            {
                index = Convert.ToInt32(textBox3.Text);
                if (index < 26 & index > 0)
                {
 
                    n = str1.Length;
                    //textBox2.Text = ""; 
                    textBox2.Text = "";
                    for (int i = 0; i < n; i++)
                    {
                        k = (int)str1[i];
                        k = k - index;
                        if (k < 97) k = k + 26;
                        textBox2.Text = textBox2.Text + ((char)(k)).ToString();
                     }
               }
         }
    }
Помогите пожалуйста.

Решение задачи: «Доработка шифра Цезаря»

textual
Листинг программы
// Функция возвращает A по модулю B
// например:
// Mod(3,5) = 3
// Mod(5,5) = 0
// Mod(6,5) = 1
// Mod (-1, 5) = 4   <- Обычная конструкция a%b не работает с отрицательными числами
// 
// Нужна чтобы циклично сдвигать массив при шифровании
private int Mod(int a, int b)
{
    return (Math.Abs(a * b) + a) % b;
}
 
private string ShiftString(string Text, int Size = 1)
{
    var sb = new StringBuilder(); // StringBuilder это почти обычный string, только быстрее
    foreach (char c in Text) // перебираем все символы в строке Text
    {
        int index = Charset.IndexOf(c); // Находим порядковый номер этого символа в алфавите (нашем)
        sb.Append(index == -1 ? // Если -1 значит символа нет в алфавите
            c : // тогда мы его просто в строку копируем не изменяя
            Charset[Mod(index + Size, Charset.Length)]); // а если нашли, то добавим к номеру смещение Size
                                                        // Возьмем по модулю "Длина_алфавита" ('Я'+1 -> 'A')
                                                        // и поместим в новую строку символ алфавита по этому новому номеру (индексу)
    }
    return sb.ToString(); // ну и вернем обычную строку из "быстрой строки" (StringBuilder)
}

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


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

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

10   голосов , оценка 3.6 из 5