📄 form1.cs
字号:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace 基于十进制的线性四叉树编码
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
/*设计思路:
先将行列号转换成二进制,存在数组里。
当行列号的二进制位数不一致时,在其前补零,存在另一个数组里。
最后交叉输出行列号的二进制编码*/
int[] array11 = new int[20];
int[] arrayn11 = new int[20];//行号二进制数组
int[] array12 = new int[20];
int[] array21 = new int[20];
int[] arrayn21 = new int[20];//列号二进制数组
int[] array22 = new int[20];
int[] array3 = new int[40];//输出数组
int[] array4 =new int [20];//补零数组
int n11 = 0, n21 = 0,n3=0,n4=0,new11,new21;
int Lmax;//最长二进制位数
int a = Int16.Parse(textBox1.Text);
int b = Int16.Parse(textBox2.Text);
//将输入的数转换成二进制
for (int i = 0; a > 0; i++)
{
arrayn11[i] = a % 2;
a = a / 2;
n11++;
}
new11 = n11;
for (int i = 0; i < new11; i++)
{
array11[i] = arrayn11[--n11];
}
for (int i = 0; b > 0; i++)
{
arrayn21[i] = b % 2;
b = b / 2;
n21++;
}
new21 = n21;
for (int i = 0; i<new21; i++)
{
array21[i] =arrayn21 [--n21];
}
//判断大小后交叉输出数组
if (new11>=new21 )
{
Lmax =new11 ;
for (int j=0;j<(new11 - new21);j++)
{
array4[j] = 0; n4++;
}
for(int j=0,i=0;j<Lmax&&i<new21;i++,j++)
{
//位数不够时补零
while (n4 > 0&&j<n4 )
{
array22[j] = array4[j++];
}
array22[j] = array21[i];
}
//交叉输出数组
for(int i=0;n3<2*Lmax;i++,n3++)
{
array3 [n3]=array11[i];
array3 [++n3]=array22[i];
}
for (int i = 0; i < 2*Lmax ; i++)
{
textBox3.Text += array3[i].ToString();
}
for (int i = 0; i < Lmax; i++)
{
textBox4.Text += array11[i].ToString();
}
for (int i = 0; i < Lmax; i++)
{
textBox5.Text += array22[i].ToString();
}
}
else //以下同上
{
Lmax =new21;
for (int j = 0; j < (new21-new11); j++)
{
array4[j] = 0; n4++;
}
for (int j = 0, i = 0; j < Lmax && i< new11; i++, j++)
{
while(n4>0&&j<n4)
{
array12[j] = array4[j++];
}
array12[j] = array11[i];
}
for (int i = 0; n3< 2 * Lmax; i++,n3++)
{
array3[n3] = array12[i];
array3[++n3] = array21[i];
}
for (int i = 0; i < 2*Lmax; i++)
{
textBox3.Text += array3[i].ToString();
}
for (int i = 0; i < Lmax; i++)
{
textBox4.Text += array12[i].ToString();
}
for (int i = 0; i < Lmax; i++)
{
textBox5.Text += array21[i].ToString();
}
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -