信息论编码实习报告Word文档格式.docx

上传人:b****9 文档编号:13092223 上传时间:2022-10-04 格式:DOCX 页数:61 大小:103.96KB
下载 相关 举报
信息论编码实习报告Word文档格式.docx_第1页
第1页 / 共61页
信息论编码实习报告Word文档格式.docx_第2页
第2页 / 共61页
信息论编码实习报告Word文档格式.docx_第3页
第3页 / 共61页
信息论编码实习报告Word文档格式.docx_第4页
第4页 / 共61页
信息论编码实习报告Word文档格式.docx_第5页
第5页 / 共61页
点击查看更多>>
下载资源
资源描述

信息论编码实习报告Word文档格式.docx

《信息论编码实习报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《信息论编码实习报告Word文档格式.docx(61页珍藏版)》请在冰豆网上搜索。

信息论编码实习报告Word文档格式.docx

Ifprefix.cisinDictionaryprefix←prefix.c

else

code-stream←cwforprefixDictionary[j]←prefix.c

j←n+1

prefix←c

end

code-stream←cwforprefix

(2)译码算法

cw←firstcodefromcode-streamchar-stream←Dictionary[cw]pw←cw

while((cw←nextcodeword)!

=NULL)ifcwisinDictionary

char-stream←Dictionary[cw]prefix←Dictionary[pw]

k←firstcharacterofDictionary[cw]

Dictionary[j]←prefix.kj←n+1

pw←cw

prefix←Dictionary[pw]

k←firstcharacterofprefixchar-stream←prefix.kDictionary[j]←prefix.k

pw←cwj←n+1

④程序及运行结果

(1)编码程序#include<

stdio.h>

#include<

stdlib.h>

#include<

string.h>

charstr[]="

TheLempelZivalgorithmcancompresstheenglishtextbyaboutfiftyfivepercent."

;

char Dic[200][5];

//定义一个二维的字符串数组,用来存放字典内容,200表示个数,5表示长度

/**********************************************************

函数名称:

intFind(strings)

函数功能:

在字典中寻找字符s,并返回在字典中的序号输入参数:

所要查找的字符

返回值:

字符在字典中对应的标号

**********************************************************/intFind(char*str)

{

inti,temp=-1;

for(i=0;

i<

200;

i++) //这个地方的i<

200要与上面定义的dic

长度相对应,否则会输出错误结果

if(strcmp(Dic[i],str)==0)temp=i+1;

//字符的查找,并输出对应的相对位置

}

returntemp;

voidDic_init(),字典初始化

将a~z,A~Z以及一些标点符号加入字典中并编号输入参数:

void

/**********************************************************/voidDic_init()

inti,j;

for(j=0,i=0;

26;

i++)//新建一个字典,将A-Z存入其中

Dic[j][0]='

A'

+i;

j++;

for(j=26,i=0;

i++)//新建一个字典,将a-z存入其中

a'

Dic[52][0]='

'

//存入四个符号

Dic[53][0]='

.'

Dic[54][0]='

?

'

Dic[55][0]='

!

Dic[56][0]='

'

intmain()//主程序

printf("

输入待编码的字符串为:

\n%s\n"

str);

Dic_init();

//字典初始化

chartemp[2];

//定义2个字符长的字符串temp[0]=str[0];

//取第一个字符temp[1]='

\0'

//将第2个设置为空格

charP[5];

//P为前缀,将temp赋给字符串Pstrcpy(P,temp);

inti=1;

//下面从第2个字符开始

intj=57;

//目前字典存储的最后一个位置

编码为:

"

);

while

(1)

chart[2];

//定义2个字符长的字符串t[0]=str[i];

//取下一字符

t[1]='

//将第2个设置为空格charC[5];

//C为字符流中下一个字符chard[5];

strcpy(C,t);

charBlank[2]="

if(!

strcmp(C,Blank)) //无码字要译,结束

%4d"

Find(P));

//输出代表当前前缀的码字break;

//退出循环,编码结束

strcpy(d,P);

if(Find(strcat(P,C))>

-1) //有码字要译,如果P+C在词典中,则用C扩展P,进行下一步:

i++;

else //如果P+C不在词典中,则将P+C添加到词典中,令

P:

=C

Find(d));

//输出代表当前前缀的码字charPC[5];

strcpy(PC,strcat(d,C));

strcpy(Dic[j++],PC);

strcpy(P,C);

\n生成的字典为:

\n"

j;

i++) //输出词典中的内容,j为词典的长度

%8d—%s;

i+1,Dic[i]);

return0;

运行结果:

(2)译码程序#include<

//intCodenum[100];

//定义接收到的一串编码

intCodenum[]={20,34,31,57,12,31,39,42,31,38,57,26,35,48,57,27,38,

33,41,44,35,46,34,39,57,29,27,40,82,41,64,44,31,45,45,57,79,60,31,40,3

3,38,35,45,34,93,31,50,46,57,28,51,72,28,41,47,106,32,35,32,46,109,115,4

8,60,65,44,29,96,46,54,0};

intCodeum[]={20,34,31,57,29,27,46,61,27,40,40,41,64,45,35,64,41,40,

57,46,59,65,68,42,51,57,41,32,76,78,62,44,54,0};

//定义接收到的一串编码,结尾以0做标志

charstr[100];

//定义一个待编码的字符串变量

chardic[200][10];

//这是定义字典存放空间,其容量大小可以自己更改,但是一定要有足够的地方存放下面生成字典的内容,否则会运行出错

//intn;

intFind(intx)

在字典中寻找字典元素并返回输入参数:

所要查找的编码

字典中相应位置的字典元素

**********************************************************/

用a~z,A~Z以及一些标点符号,初始化字典输入参数:

**********************************************************/voidDic_init()

dic[j][0]='

dic[j][1]='

dic[52][0]='

dic[53][0]='

dic[54][0]='

dic[55][0]='

dic[56][0]='

//for(i=52;

=56;

i++)dic[i][1]='

voidcode(stringstr)

对输入的字符串进行LZW字典编码输入参数:

str待编码的字符串

用cout输出显示编码后的码

voidDe_code(int*code)

charCurr[10];

charCu[2];

Cu[1]='

charPre[10];

Dic_init

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 其它课程

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1