Шифр перестановки - C# (202468)
Формулировка задачи:
Здраствуйте. Проблема нарисовалась у меня. Делаю программу, которая шифрует строку случайной перестановкой символов по заданному ключу. Решил сделать двумерный массив из 6 столбцов и (число символов/6)+1 столбцов. Ключ делаю 6 значный. если ключ равен "012345", то после перестановки получается текст, равный исходному,что логично. Если поменять цифры местами, то после перестановки куда-то деваются некоторые буквы. Посмотрите пожалуйста,что не так делаю?
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsFormsApplication1 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { int аnswer = 0; string text = textBox1.Text; Random rnd = new Random(); string key = "013245" ; MessageBox.Show(key); int row_count = (int) Math.Floor((decimal) (text.Length/6)+1); char[,] mass = new char[6, row_count]; char[,] rez = new char[6, row_count]; if (textBox1.Text.Length <= 40) { // - - - - - - - - - ИНИЦИАЛИЗАЦИЯ - - - - - -- - - - -- - - -- - - - -- - - - -- - - // for (int x = 0; x < row_count; x++) { for (int y = 0; y < 6; y++) { mass[y, x] = ' '; //rez[y, x] = ' '; } } int q=0; // - - - - - - - - - ЗАПОЛНЕНИЕ МАТРИЦЫ - - - - - -- - - - -- - - -- - - - -- - - - -- - - // for (int x = 0; x < row_count; x++) { for (int y = 0; y < 6; y++) { if (q < text.Length ) { mass[y, x] = text[q]; q++; } } } // - - - - - - - - - ПРЕОБРАЗОВАНИЕ МАТРИЦЫ - - - - - -- - - - -- - - -- - - - -- - - - -- - - аnswer = key[0]; int c,b = 0; for (int x = 0; x < row_count; x++) { c = 0; for (int y = 0; y < 6; y++) { rez[int.Parse(key[c].ToString()), x] = mass[y,x]; richTextBox1.Text += rez[y, x]; c++; } // richTextBox1.Text += Environment.NewLine; } // - - - - - - - - - ВЫВОД МАТРИЦЫ НА ЭКРАН - - - - - -- - - - -- - - -- - - - -- - - - -- - - // //for (int x = 0; x < row_count; x++) //{ // for (int y = 0; y < 6; y++) // { // richTextBox1.Text += mass[y, x]; // } // richTextBox1.Text += Environment.NewLine; //} } else { MessageBox.Show("Очень много символов. Хочу меньше."); } } } }
Решение задачи: «Шифр перестановки»
textual
Листинг программы
rez[y, x] = mass[int.Parse(key[c].ToString()),x];
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д