Доработка шифра Цезаря - 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) }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д