Beispiel #1
0
        public Encoder1(string input)
        {
            HuffmanTree1 huffmanTree = new HuffmanTree1();

            huffmanTree.Build(input);
            this.CodedBitString = huffmanTree.Encode(input);
            this.CodeTable      = huffmanTree.ReturnCodeTable(input);
        }
        private void button2_Click(object sender, EventArgs e)
        {
            Dictionary <List <bool>, string> CodeTable = new Dictionary <List <bool>, string>();
            string input       = richTextBox1.Text;
            Source source      = new Source(input);
            string sourceinput = source.inputstring;

            if (radioButton1.Checked)
            {
                HuffmanTree huffmanTree = new HuffmanTree();
                huffmanTree.Build(sourceinput);
                Encoder  encoder = new Encoder(sourceinput);
                BitArray encoded = encoder.CodedBitString;
                double   zeros   = 0;
                double   edins   = 0;
                foreach (bool bit in encoded)
                {
                    richTextBox2.AppendText((bit ? 1 : 0) + "");
                }
                richTextBox2.Text += "\n";
                richTextBox2.Text += "Помехоустойчивый код \n";
                //
                CodeTable = encoder.getCodeTable();
                foreach (KeyValuePair <List <bool>, string> symbol in CodeTable)
                {
                    richTextBox3.Text += symbol.Value.ToString();
                    richTextBox3.AppendText("       ");
                    foreach (bool bit in symbol.Key)
                    {
                        richTextBox3.AppendText((bit ? 1 : 0) + "");
                    }
                    richTextBox3.Text += "\n";
                }
                EnctoNoiseEnc objnoiseencoder  = new Encoder(input);
                NoiseEncoder  objnencoder      = new NoiseEncoder(encoded);
                BitArray      noisecodedstring = objnencoder.getNoiseEncodedStr();//помехоустойчивая кодовая строка
                foreach (bool bit in noisecodedstring)
                {
                    richTextBox2.AppendText((bit ? 1 : 0) + "");
                    if (bit == false)
                    {
                        zeros++;
                    }
                    if (bit == true)
                    {
                        edins++;
                    }
                }
                textBox2.AppendText(zeros.ToString());
                textBox3.AppendText(edins.ToString());
                double sred = Math.Round((zeros + edins) / input.Length, 3);
                textBox4.AppendText(sred.ToString());
            }
            if (radioButton2.Checked)
            {
                HuffmanTree1 huffmanTree = new HuffmanTree1();
                huffmanTree.Build(sourceinput);
                Encoder1 encoder = new Encoder1(sourceinput);
                BitArray encoded = encoder.CodedBitString;
                int      zeros   = 0;
                int      edins   = 0;
                foreach (bool bit in encoded)
                {
                    richTextBox2.AppendText((bit ? 1 : 0) + "");
                    if (bit == false)
                    {
                        zeros++;
                    }
                    if (bit == true)
                    {
                        edins++;
                    }
                }
                textBox2.AppendText(zeros.ToString());
                textBox3.AppendText(edins.ToString());
                //
                CodeTable = encoder.getCodeTable();
                foreach (KeyValuePair <List <bool>, string> symbol in CodeTable)
                {
                    richTextBox3.Text += symbol.Value.ToString();
                    richTextBox3.AppendText("       ");
                    foreach (bool bit in symbol.Key)
                    {
                        richTextBox3.AppendText((bit ? 1 : 0) + "");
                    }
                    richTextBox3.Text += "\n";
                }
            }
            if (radioButton3.Checked)
            {
                HuffmanTree2 huffmanTree = new HuffmanTree2();
                huffmanTree.Build(sourceinput);
                Encoder2 encoder = new Encoder2(sourceinput);
                BitArray encoded = encoder.CodedBitString;
                int      zeros   = 0;
                int      edins   = 0;
                foreach (bool bit in encoded)
                {
                    richTextBox2.AppendText((bit ? 1 : 0) + "");
                    if (bit == false)
                    {
                        zeros++;
                    }
                    if (bit == true)
                    {
                        edins++;
                    }
                }
                //
                textBox2.AppendText(zeros.ToString());
                textBox3.AppendText(edins.ToString());
                CodeTable = encoder.getCodeTable();
                foreach (KeyValuePair <List <bool>, string> symbol in CodeTable)
                {
                    richTextBox3.Text += symbol.Value.ToString();
                    richTextBox3.AppendText("       ");
                    foreach (bool bit in symbol.Key)
                    {
                        richTextBox3.AppendText((bit ? 1 : 0) + "");
                    }
                    richTextBox3.Text += "\n";
                }
            }
        }