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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.02.2013, 00:42   #11
Дженнет
 
Регистрация: 09.02.2013
Сообщений: 7
По умолчанию

Код:
private void button2_Click(object sender, EventArgs e)
        {
            double cols = Math.Sqrt(textBox1.Text.Length);
            double rows = Math.Sqrt(textBox1.Text.Length);
            double Cols = (Math.Floor(cols));
            int Cols1 = Convert.ToInt32(Cols);
            int Rows2 = Cols1;
            dataGridView1.RowCount = Cols1; 
            dataGridView1.ColumnCount = Rows2;
            
            for (int i = 0; i < Cols1; i++)
                for (int j = 0; j < Rows2; j++)
                    dataGridView1[i, j].Value = textBox1.Text[i * Cols1 + j];

            StringBuilder sb = new StringBuilder ();


            for (int i = 0; i < Cols1; i++)
                for (int j = 0; j < Rows2; j++)
                    sb.Append(dataGridView1[j, i].Value.ToString());
            textBox2.Text = sb.ToString();
        } 
    }
}
Вот...он всё равно выводит только бандероль, хотя я там еще текст добавила(

Последний раз редактировалось Дженнет; 23.02.2013 в 00:45.
Дженнет вне форума Ответить с цитированием
Старый 23.02.2013, 10:51   #12
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Код:
string s = textBox1.Text;
int cols = (int)Math.Ceiling(Math.Sqrt(s.Length));
int rows = (int)Math.Ceiling(s.Length / (double)cols);
dataGridView1.RowCount = rows;
dataGridView1.ColumnCount = cols;
for (int i = 0; i < cols; i++)
  for (int j = 0; j < rows; j++)
    if (s.Length > i * rows + j) dataGridView1[i, j].Value = s[i * rows + j];
    else dataGridView1[i, j].Value = 'a';
StringBuilder sb = new StringBuilder();
for (int j = 0; j < rows; j++)
  for (int i = 0; i < cols; i++)
    sb.Append(dataGridView1[i, j].Value.ToString());
textBox2.Text = sb.ToString();
Как-то так вот.
phomm вне форума Ответить с цитированием
Старый 23.02.2013, 11:00   #13
Дженнет
 
Регистрация: 09.02.2013
Сообщений: 7
По умолчанию

Класс) Вы просто гений!) Спасибо

Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.IO;
using System.Windows.Forms;
using System.Text;

namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (openFileDialog1.ShowDialog() == DialogResult.OK)
            {
                StreamReader sr = new StreamReader(openFileDialog1.FileName);
                textBox1.Text = sr.ReadToEnd();
                sr.Close();
            }

        }

        private void pictureBox1_Click(object sender, EventArgs e)
        {

        }

        private void menuStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
        {

        }

        private void выходToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Application.Exit();
        }

        private void button3_Click(object sender, EventArgs e)
        {
            string Ex2 = textBox2.Text;
            int cols1 = (int)Math.Ceiling(Math.Sqrt(Ex2.Length));
            int rows1 = (int)Math.Ceiling(Ex2.Length / (double)cols1);
            dataGridView2.RowCount = rows1;
            dataGridView2.ColumnCount = cols1;
           
                for (int j = 0; j < rows1; j++)
                    for (int i = 0; i < cols1; i++)
                    if (Ex2.Length > j * cols1 + i) dataGridView2[i, j].Value = Ex2[j * cols1 + i];
                    else dataGridView1[i, j].Value = '+';
            StringBuilder sb1 = new StringBuilder();
            for (int i = 0; i < cols1; i++)
                for (int j = 0; j < rows1; j++)
                    sb1.Append(dataGridView2[i, j].Value.ToString());
            string str1 = sb1.ToString();
            string str = "";
            for (int i = 0; i < str1.Length; i++)
            {
                if (char.IsLetter(str1[i])) str = str + str1[i];
                else
                {
                    str = str;
                }
            }
            textBox3.Text = str;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            string s = textBox1.Text;
            int cols = (int)Math.Ceiling(Math.Sqrt(s.Length));
            int rows = (int)Math.Ceiling(s.Length / (double)cols);
            dataGridView1.RowCount = rows;
            dataGridView1.ColumnCount = cols;
            for (int i = 0; i < cols; i++)
                for (int j = 0; j < rows; j++)
                    if (s.Length > i * rows + j) dataGridView1[i, j].Value = s[i * rows + j];
                    else dataGridView1[i, j].Value = '+';
            StringBuilder sb = new StringBuilder();
            for (int j = 0; j < rows; j++)
                for (int i = 0; i < cols; i++)
                    sb.Append(dataGridView1[i, j].Value.ToString());
            textBox2.Text = sb.ToString();

        } 
    }
Посмотрите, пожалуйста, может можно как-то грамотно сократить программу? Я для дешифрирования тоже написала))

Последний раз редактировалось Stilet; 08.12.2015 в 18:27.
Дженнет вне форума Ответить с цитированием
Старый 25.02.2013, 19:50   #14
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Вынести весь дублирующийся код по отдельным методам.
phomm вне форума Ответить с цитированием
Старый 07.12.2015, 22:47   #15
Yborshik
 
Регистрация: 27.05.2014
Сообщений: 4
По умолчанию

Что нужно что бы запустить этот код?
Yborshik вне форума Ответить с цитированием
Старый 08.12.2015, 06:21   #16
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Достаточно вижуал студии 2010 экспресс, там создать новое C# винформс приложение, в нем на форму кинуть грид, кнопку и 2 текстбокса - дважды кликнуть по кнопке (создастся обработчик клика), и код взять из темы, то что внутри блока namespace (плюс, возможно, все using'и, не проверял), кроме кода обработчика клика кнопки по сути не надо ничего, но по желанию можно добавить и тулстрипменю, и диалог выбора файла и кнопку для работы с этим диалогом и загрузкой строки из файла.

Если есть затруднения, есть вариант получить готовое.
phomm вне форума Ответить с цитированием
Старый 08.12.2015, 16:32   #17
Yborshik
 
Регистрация: 27.05.2014
Сообщений: 4
По умолчанию

Спасибо, но уже и сам разобрался конешно не на шарпе, но переделал на Windows forms c++, прикрепил если кому надо

И вот вопрос, если вам не сложно, не могли бы мне объяснить что мне нужно сделать в этом задании "Протокол двустороннего подписания контракта на основе алгоритма цифровой подписи RSA." Не отказался бы и от разъяснения как это реализовать
Вложения
Тип файла: rar RGR_S.rar (218.9 Кб, 19 просмотров)

Последний раз редактировалось Yborshik; 08.12.2015 в 17:46.
Yborshik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос: заполнение таблицы данными из другой таблицы с автоматическим добавлением строк yevgeniy.demidov Microsoft Office Excel 6 06.09.2012 15:27
Шифрующие таблицы с перестановкой по ключу –размеру таблицы Катка Помощь студентам 0 01.03.2012 19:56
Шифрующие таблицы Трисемуса 1keks Помощь студентам 13 22.11.2010 00:47
Данные из двух полей исх. таблицы в одно поле сводной таблицы Strelec79 Microsoft Office Excel 2 02.08.2009 13:59
Шифрующие таблицы Трисемуса megayakor Помощь студентам 4 11.06.2008 13:16