⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 游程编码.cpp

📁 用C语言实现《信息论与编码》里的游程编码(黑白用数字表示)。
💻 CPP
字号:
3//像素里的白用字符‘1’表示,黑用‘0’表示

#include<stdio.h>

typedef struct
{
  int length;
  char *MH;
}form;


void buildform(form *white,form *blcak)                //暂只创建了表的前32行(所以运行时游程的长度不要超过31)
{
    int i;
	for(i=0;i<32;i++)
	{
      white[i].length=i;
      blcak[i].length=i;          //填黑白MH表里的游程长度
	}
 
white[0].MH="00110101";
white[1].MH="000111";
white[2].MH="0111";
white[3].MH="1000";
white[4].MH="1011";
white[5].MH="1100";				
white[6].MH="1110";
white[7].MH="1111";
white[8].MH="10011";
white[9].MH="10100";
white[10].MH="00111";
white[11].MH="01000";
white[12].MH="001000";
white[13].MH="000011";
white[14].MH="110100";
white[15].MH="110101";
white[16].MH="101010";
white[17].MH="101011";
white[18].MH="0100111";
white[19].MH="0001100";
white[20].MH="0001000";
white[21].MH="0010111";
white[22].MH="0000011";
white[23].MH="0000100";
white[24].MH="0101000";
white[25].MH="0101011";
white[26].MH="0010011";
white[27].MH="0100100";
white[28].MH="0011000";
white[29].MH="00000010";
white[30].MH="00000011";
white[31].MH="00011010";
				
blcak[0].MH="0000110111";
blcak[1].MH="010";
blcak[2].MH="11";
blcak[3].MH="10";
blcak[4].MH="011";
blcak[5].MH="0011";				
blcak[6].MH="0010";
blcak[7].MH="00011";
blcak[8].MH="000101";
blcak[9].MH="000100";
blcak[10].MH="0000100";
blcak[11].MH="0000101";
blcak[12].MH="0000111";
blcak[13].MH="00000100";
blcak[14].MH="00000111";
blcak[15].MH="000011000";
blcak[16].MH="0000010111";
blcak[17].MH="0000011000";
blcak[18].MH="0000001000";
blcak[19].MH="00001100111";
blcak[20].MH="00001101000";
blcak[21].MH="00001101100";
blcak[22].MH="00000110111";
blcak[23].MH="00000101000";
blcak[24].MH="00000010111";
blcak[25].MH="00000011000";
blcak[26].MH="000011001010";
blcak[27].MH="000011001011";
blcak[28].MH="000011001100";
blcak[29].MH="000011001101";
blcak[30].MH="000001101000";
blcak[31].MH="000001101001";
}  




void main()
{
 int i,k,m;
 char input[1728];


 form  white[32];
 form  blcak[32];            //定义黑白表结构题数组,(完整的黑白数组应分别有92个元素)
 buildform(white,blcak) ;




 for(i=0;i<1728;i++)            //为操作简便,运行时输入的黑白总个数不要超过常规文本的一行,即1728个像素
 {
	 scanf("%c",&input[i]);
	 if(input[i]=='\n')break;
 }
 k=i;
 
 
 if(input[0]=='0')printf("%s",white[0].MH); 

 i=0;
 for(;i<k;)
 {

   while(input[i]=='1')
   {
	    m=0;
		 for(;i<k;i++)
		 {
		   if(input[i]=='1')m++;
		   else break;
		 }
		 
		 printf("%s",white[m].MH);
   }


   while(input[i]=='0')
   {
      
	   m=0;
      for(;i<k;i++)
		 {
		   if(input[i]=='0')m++;
		   else break;
		   
		 }
	     
		 printf("%s",blcak[m].MH);
   }

   

 }
   
 
	

 
}

/*几组测试数据
一 黑白文本 0111
   译码     00110101 010 1000
二 黑白文本 01110
   译码     00110101 010 1000 010
三 黑白文本 1110110
   译码     1000  010  0111  010
四 黑白文本 111111111111111111100000
   译码     1010110011
    



*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -