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

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

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

помогите разобраться и дописать прогу немного непойму. 1. Как дописать в form1 чтоб было шифрование и дешифрирование текста из стоки texBox1 в texBox2.(Ошибка в коде де шифрования) 2.Как можно дописать чтоб не только английские буквы были и цифры но еще и русские. Вот код шифрования:
Листинг программы
  1. {
  2. n = str1.Length;
  3. //textBox1.Text = "";
  4. textBox2.Text = "";
  5. for (int i = 0; i < n; i++)
  6. {
  7. k = (int)str1[i];
  8. k = k + index;
  9. if (k > 122) k = k - 26;
  10. textBox2.Text = textBox2.Text + ((char)(k)).ToString();
  11. }
  12. }
Код де шифрования:
Листинг программы
  1. private void button2_Click(object sender, EventArgs e)
  2. {
  3. int k, n, index;
  4. string str1;
  5. str1 = textBox1.Text;
  6. if (textBox3.Text != "")
  7. {
  8. index = Convert.ToInt32(textBox3.Text);
  9. if (index < 26 & index > 0)
  10. {
  11. n = str1.Length;
  12. //textBox2.Text = "";
  13. textBox2.Text = "";
  14. for (int i = 0; i < n; i++)
  15. {
  16. k = (int)str1[i];
  17. k = k - index;
  18. if (k < 97) k = k + 26;
  19. textBox2.Text = textBox2.Text + ((char)(k)).ToString();
  20. }
  21. }
  22. }
  23. }
Помогите пожалуйста.

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут