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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 12.10.2015, 18:11   #11
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Так я как раз разобрался теперь. Сначала просто скопипастил.
Но у меня теперь проблема, что бинарные данные выводятся, но не те. Привожу код:
Код:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using ZedGraph;
using System.Collections;

namespace Bin_creator
{
    

    public partial class FormM : Form
    {
        bool btn1pos = false;
        

        public FormM()
        {
            InitializeComponent();



        }

    private void Form1_Load(object sender, EventArgs e)
        {

        }

        private void richTextBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void button1_Click(object sender, EventArgs e)
        {
            btn1pos = !btn1pos;

            this.Controls["button1"].UseWaitCursor = false;
            /////////////////Представляем символы в двоичном виде и выводим на график/////////////////
            //////////////////////////////////////////////////////////////////////////////////////////  
            string A = richTextBox1.Text;
            string str_bin = asbin(A);

            byte[] strBytes = System.Text.Encoding.Unicode.GetBytes(A);

            StringBuilder sb = new StringBuilder();
            foreach (byte b in System.Text.Encoding.Unicode.GetBytes(A))
                sb.Append(Convert.ToString(b, 2).PadLeft(8, '0')).Append(' ');

            string binaryStr = sb.ToString();                  //////////////Массив 0 и 1

            string bin_mes = asbin("Hello");
            this.Controls["richTextBox2"].Text = bin_mes;//str_bin;
            
            ////////////////////////////////////////////////////////////////Создание значений x

            if (btn1pos){ }

            if (!btn1pos)
            {
                this.Controls["button1"].UseWaitCursor = true;
            }
        }

        string chr2(char c)
        {
            ZedGraphControl zedGraph = new ZedGraphControl();
            zedGraph.Location = new System.Drawing.Point(100, 10);
            zedGraph.Name = "zedGraph";
            zedGraph.Size = new System.Drawing.Size(500, 300);
            this.Controls.Add(zedGraph);
            ZedGraphControl zgc = zedGraph;
            GraphPane myPane = zgc.GraphPane;
            myPane.CurveList.Clear();
            // Set the titles and axis labels
            myPane.Title = "Бинарные данные";
            myPane.XAxis.Title = "n, выборки";
            myPane.YAxis.Title = "bin_data, единицы";
            PointPairList list = new PointPairList();

            string s = ""; int i = 1; 
            for (; c != '\0'; c = (char)((byte)c >> 1))
            {
                s = ((((byte)c & 1) != 0) ? "1" : "0") + " " + s;
                int s1 = ((((byte)c & 1) != 0) ? 1 : 0);
                list.Add(i, s1);
                i++;
            }

            LineItem myCurve = myPane.AddCurve("bin_data",
               list, Color.Green, SymbolType.Diamond);
            zgc.AxisChange();
            zgc.Refresh();
            zedGraph.Invalidate();

            return s;
        }
        string asbin(string s)
        {
            string res = "";
            foreach (char c in s) res += chr2(c);
            return res;
        }

        private void richTextBox2_TextChanged(object sender, EventArgs e)
        {

        }

        private void chart1_Click(object sender, EventArgs e)
        {

        }
    }
}
Вот как он отображает "Hello" в бинарном виде в текстовом поле:
Код:
1 0 0 1 0 0 0 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 0 1 1 0 1 1 1 1
А на графике я вижу лишь 1 0 1 1 0 1. Это как, это что? Даже при комментировании строчек:
Код:
//string bin_mes = asbin("Hello");
            //this.Controls["richTextBox2"].Text = bin_mes;//str_bin;
при нажатии на кнопку выводится эта загадочная комбинация 1 0 1 1 0 1. Как можно это исправить?

Последний раз редактировалось Krasi; 12.10.2015 в 18:13.
Krasi вне форума Ответить с цитированием
Старый 12.10.2015, 18:54   #12
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Построить график с бинарными данными
График, представленныйй ТС, не является бинарным. Бинарная величина предполагает только два исхода - да, нет.
У ТС, график дискретный. О чём речь?
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 12.10.2015 в 19:11.
Smitt&Wesson вне форума Ответить с цитированием
Старый 12.10.2015, 19:42   #13
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
О чём речь?
Кроме того графика в начале других не заметил. А про тот ТС и сам написал, что он не бинарный. Действительно, о чем речь?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 12.10.2015, 20:10   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Действительно, о чем речь?
Слабо нюхаете. Сделайте себе дорожку пошире, и трубочку не из рублей а из долларов надо
Цитата:
бинарные данные выводятся, но не те.
А зачем ты на каждую букву отдельный график строишь? Может тебе нужно один график на все буквы? Почему ты не градиолус, лучше же лотуса. И вообще чего это как?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 12.10.2015, 20:41   #15
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Функция list.Add(i, s1); добавляет точки на один и тот же график, насколько я понял. Если написать цикл вида for (i = 0; i < 10) {list.Add(i, s1); i++;}, то получится диагональная прямая на графике. Я перенес ее в функцию и вызвал всего 1 раз.
Но я задумался о том, что если она не static, а уж тем более раз она строит график даже тогда, когда я ее не вызывал, то есть комментировал все, то значит что-то тут не чисто. А вот подробнее я сообразить не могу, несмотря на то, что я пробовал пошагово смотреть, что у меня происходит. Так что у меня, все-таки, происходит в программе, что на графике получается всегда, при любом тексте, только 6 значений 1 0 1 1 0 1?
Хотя я сейчас понял, что, наверное, у меня chr2 возвращает только один символ, но тогда не совсем понятно, откуда взялась именно комбинация 1 0 1 1 0 1? Я просто только завтра буду у компа с Visual Studio, чтобы все изменить и сделать Мир правильнее.
А я не знаю, кто такой градиолус, объясни?
Krasi вне форума Ответить с цитированием
Старый 12.10.2015, 21:47   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Функция list.Add(i, s1); добавляет точки на один и тот же график
Да ты его постоянно стираешь: myPane.CurveList.Clear();
Хотя ты его вообще пересоздаешь по новой: ZedGraphControl zedGraph = new ZedGraphControl();
Цитата:
Я перенес ее в функцию и вызвал всего 1 раз.
Один раз для каждого символа. Каждого!! Карл!
Цитата:
не совсем понятно, откуда взялась именно комбинация 1 0 1 1 0 1?
Вот будешь у студии - запусти отладку.
Цитата:
А я не знаю, кто такой градиолус
А я не знаю что ты хочешь сделать - мы квиты.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2015, 10:13   #17
Krasi
Форумчанин
 
Регистрация: 12.02.2010
Сообщений: 787
По умолчанию

Почти получилось. У меня сейчас такой код
Код:
 string chr2(char c, ZedGraphControl zedGraph, PointPairList list)
        {

            string s = ""; int i = 1;
            for (; c != '\0'; c = (char)((byte)c >> 1))
            {
                s = ((((byte)c & 1) != 0) ? "1" : "0") + " " + s;
                int s1 = ((((byte)c & 1) != 0) ? 1 : 0);
                list.Add(i, s1);
                i = i+1;

            }

            return s;
        }
        string asbin(string s)
        {
            string res = "";
          
            ZedGraphControl zedGraph = new ZedGraphControl();
            zedGraph.Location = new System.Drawing.Point(100, 10);
            zedGraph.Name = "zedGraph";
            zedGraph.Size = new System.Drawing.Size(500, 300);
            this.Controls.Add(zedGraph);
            ZedGraphControl zgc = zedGraph;
            GraphPane myPane = zgc.GraphPane;
            myPane.CurveList.Clear();
            // Set the titles and axis labels
            myPane.Title = "Бинарные данные";
            myPane.XAxis.Title = "n, выборки";
            myPane.YAxis.Title = "bin_data, единицы";
            PointPairList list = new PointPairList();

            foreach (char c in s) res += chr2(c, zedGraph, list);

            LineItem myCurve = zedGraph.GraphPane.AddCurve("bin_data",
              list, Color.Green, SymbolType.Diamond);
            zedGraph.AxisChange();
            zedGraph.Refresh();
            zedGraph.Invalidate();

            return res;
        }
Он все делает прекрасно, надеюсь. Но он после каждого символа (6 или 7 бит) обнуляет переменную i. А мне нужно в графике сделать, чтобы он вывел по оси абсцисс все значения i = длина битовой последовательности. Вот не могу понять, как проще это сделать? Я понял, что как-то можно передавать 2 переменные в функцию, но пока не получается. Я добавил для наглядности рисунок, как у меня получается вывод на график сейчас. Надо всего-то сделать так, чтобы те же данные выводились не только для i = {1:6...7}
Изображения
Тип файла: jpg Бинарные данные.jpg (83.7 Кб, 137 просмотров)

Последний раз редактировалось Krasi; 13.10.2015 в 10:16.
Krasi вне форума Ответить с цитированием
Старый 13.10.2015, 11:01   #18
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну так сделай "i" глобальной )
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 13.10.2015, 11:19   #19
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от Krasi Посмотреть сообщение
Хотя я сейчас понял, что, наверное, у меня chr2 возвращает только один символ, но тогда не совсем понятно, откуда взялась именно комбинация 1 0 1 1 0 1? Я просто только завтра буду у компа с Visual Studio, чтобы все изменить и сделать Мир правильнее.
А я не знаю, кто такой градиолус, объясни?
Таак, похоже здесь без пузыря не разобраться. . Так, побежал, разберёмся .

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ну так сделай "i" глобальной )
Нахрена? Лучше передать её в функцию как указатель. Если сделать глобальной (что не айс) функция станет трудно переносимой в другие коды, конечно, если она пишется "для себя", тогда - другое дело. Можно и все переменные объявить глобальными как в Бейсике. Плохо или хорошо будет автору, но, вот кто захочет повторить эту функцию у себя, ой намучается.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 13.10.2015 в 11:28.
Smitt&Wesson вне форума Ответить с цитированием
Старый 13.10.2015, 11:41   #20
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
функция станет трудно переносимой в другие коды
Ну и зачем ее переносить в другие коды? Глупость какая-то.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести byte в текстовую строку бинарными данными Krasi Помощь студентам 1 08.10.2015 15:42
Как построить граф,имея таблицу с данными? Вероника99 Помощь студентам 0 06.12.2014 20:38
Построить График МакаРомка! Паскаль, Turbo Pascal, PascalABC.NET 0 02.06.2013 11:17
Работа с бинарными данными. Lestar C# (си шарп) 0 04.11.2012 22:35
Работа с бинарными данными MyXa Общие вопросы .NET 1 31.01.2012 07:50