Шифр перестановки - 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];