Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 20.10.2013, 15:11   #1
itea4you.ru
Пользователь
 
Регистрация: 24.03.2011
Сообщений: 12
По умолчанию Перестановочный шифр

Здраствуйте.Делаю программу, которая шифрует строку случайной перестановкой символов по заданному ключу. Решил сделать двумерный массив из 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("Очень много символов. Хочу меньше.");
 
            }
        }
    }
Прилагаю проект полностью.
Вложения
Тип файла: rar Случайная перестановка.rar (65.6 Кб, 54 просмотров)
itea4you.ru вне форума Ответить с цитированием
Старый 24.10.2013, 06:36   #2
simples
Форумчанин
 
Регистрация: 03.10.2013
Сообщений: 142
По умолчанию

Цитата:
Сообщение от itea4you.ru Посмотреть сообщение
что не так делаю?

Код:
                   rez[int.Parse(key[c].ToString()), x] = mass[y,x];
                            richTextBox1.Text += rez[y, x];
проблема в том что Вы выводите на экран еще НЕ заполненные ячейки из rez[].
Сделайте как и планировали раньше(цикл в "// - - - - - - - - - ВЫВОД МАТРИЦЫ НА ЭКРАН - - - - - -- - - - -- - - -- - - - -- - - - -- - - //" ) вывод итоговой строки - после полной обработки.
Только там тоже замените
Код:
richTextBox1.Text += mass[y, x];
на
Код:
richTextBox1.Text += rez[y, x];
simples вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Шифр SYSSI Безопасность, Шифрование 4 13.05.2011 19:00
Перестановочный шифр с ключевым словом Tutarin Общие вопросы C/C++ 2 21.10.2010 11:54
перестановочный шифр. Delphi bigtor Фриланс 9 23.03.2010 01:24
Шифр? KoBRaAndrey Работа с сетью в Delphi 0 12.12.2009 16:16
Шифр Progs1024 Паскаль, Turbo Pascal, PascalABC.NET 9 12.10.2009 19:51