信息论c语言编码总结分析,信息论数学编码报告.docx

信息论数学编码报告

信息论与编码实验报告  学院:计算机与通信工程学院  专业:计算机科学与技术  班级:计1203班  学号:  姓名:  XX年12月29日  实验一唯一可译码判别准则  实验目的:  1.进一步熟悉唯一可译码判别准则;  2.掌握C语言字符串处理程序的设计和调试技术。  实验内容:  1.已知:信源符号数和码字集合C;  2.输入:任意的一个码,码字的个数和每个具体的码字在运行时从键盘输入;  3.输出:判决;循环。  实验原理:  根据唯一可译码的判别方法,利用数据结构所学的知识,定义字符串数据类型并利用指针进行编程来实现算法。  算法:1、考察C中所有的码字,若Wi是Wj的前缀,则将对应的后缀作为一个尾随后缀码放入集合Fi+1中;  2、考察C和Fi俩个集合,若Wi∈C是Wj∈F的前缀或Wi∈F是Wj∈C的前缀,则将相应的后缀作为尾随后缀码放入集合Fi+1中;  3、F=∪Fi即为码C的尾随后缀集合;  4、若F中出现了C中的元素,算法终止,返回假;否则若F中没有出现新的元素,则返回真。  实验环境及实验文件存档名:  1.实验环境:visualC++  2.文件名:  实验结果及分析:  1.源代码:  #include  #include  charc[100][50];  charf[300][50];  intN,sum=0;//N为输入码字的个数,sum为尾随后缀集合中码字的个数  intflag;//判断是否唯一可译标志位  voidpatterson(charc[],chard[])//检测尾随后缀  {  inti,j,k;  for(i=0;;i++)  {  if(c[i]=='\0'&&d[i]=='\0')//2字符串一样,跳出  break;  if(c[i]=='\0')//d比c长,将d的尾随后缀放入f中  {  for(j=i;d[j]!='\0';j++)f[sum][j-i]=d[j];  f[sum][j-i]='\0';  for(k=0;k100)  {  printf("输入码字个数过大,请输入小于100的数\n");  printf("请输入码字的个数:");  scanf("%d",&N);  }  flag=0;  printf("请分别输入码字:\n");  for(i=0;i中的功能,其作用为将int转换为string的类型,便于储存数据,其功能函数如下:  voidyasuo(vectora){  intlength=();  //原数据的长度//保存压缩后的数据  //a传入要压缩的数据  vectortemp;intj=0;intn=1;  for(inti=0;idata;vectorloca;vectorlen;vectorzhi;  //记录数据//记录标志的位置//记录个数据的长度  //记录每个数据的各个位上的数值//记录数据和标志的位置  for(inti=0;i#include#definen1000intmain(void){  chars[n];inti,n=0;  floatnum[27]={0};  doubleresult=0,p[27]={0};file*f;  char*temp=newchar[485];  f=fopen(,r);  while(!feof(f)){  fread(temp,1,486,f);}fclose(f);  s[0]=*temp;  for(i=0;i信息论数学编码报告)phabetstotheirASCIIcodeandthenperformthecompressionshouldoutputthecompressionthisprogram,findoutthecompressionachievedforthefollowingstringsofletters.  (i)TheLempelZivalgorithmcancompresstheEnglishtextbyaboutfiftyfivepercent.  (ii)Thecatcannotsitonthecanopyofthecar.  算法设计:  构建初始字典。  增添开始与结束标志位。  从第一个字符开始读入,以两个字符串为一组形成新的字符。  判断新的字符是否存在于字典中,如果存在,则不处理,如果不存在,则将新的字符存进字典中。  将新的字符在字典中的位置作为编码发送。  进行解码。  注:  编码时始终对字符和字符串进行操作,但发送的始终是对应的字典编

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值