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

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


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

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

13   голосов , оценка 3.846 из 5