网站大量收购闲置独家精品文档,联系QQ:2885784924

lzw用C语言实现报告.doc

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
lzw用C语言实现报告

重庆交通大学信息科学与工程学院 综合性设计性实验报告 专 业: 通信工程专业11级 学 号: 631106040 姓 名: 实验所属课程: 信 息 论 与 编 码 实验室(中心): 信息技术软件实验室 指 导 教 师 : 李益才 2013年11月 教师评阅意见: 签名: 年 月 日 实验成绩: 一、题目 LZW编码一串代码并译码 二、仿真要求 要求:用任意一门程序语言编写lzw编码的编码与译码的方法,使之实现一段代码的编码与译码。 三、仿真方案详细设计 LZW编码算法 ①字典初始化为前三个字典为a,b,c其他为空的字典,当前前缀P初始化为空; ②读入当前字符到C(即字符流中的下一个字符); ③判断P+C是否在字典中,如果在字典中,则用C扩展P,即P=P+C;否则输出与当前前缀P相对应的码字,同时将P+C添加到字典中并令P=C,即重新置当前前缀; ④判断字符流结束与否,如果没有结束,转②,否则把代表当前前缀P的码字输出到码字流; ⑤结束。 LZW编码的过程 2、LZW译码算法 ①初始化字典,并读入一个码字W; ②试读一个码字K,如果不存在码字K可读,则输出W对应的字符串,转③;否则,在W对应的字符(串)末尾加入码字K的第一个字符,形成的字符串加入字典(如果K还未在字典中出现,则W+FirstChar(W)放入字典)。然后输出W对应的字符(串),同时W=K(重新赋W的值);转②; ③算法结束。 LZW编码的过程: (code函数)编码详细的设计方案:首先初始化字典数组:前三个数为a,b,c其他为空。再输入字符串,将当前前缀为p,输入为c,再P+C。 查询字典 int LZW::StringIsDic(string e)//判断字符是否在字典里面 { for(int b=0; b200; b++) { if(e==Dic[b]) return 1; } return 0; 编辑字典 int LZW::codeDic(string f)//通过字符串输出对应字典序号 { int w=0; for(int y=0;y200;y++) if(f==Dic[y]){ w=y+1; break; } return w; } (decode函数)译码详的设计方案:pw,pc储存当前字符和初始字符,查询pw+pc相应的码字是否在字典中改变字典。最后查询字典输出。 查询字典: int LZW::IntIsDic(int g,int j)//判断整数g是否在字典中 { for(int i=0;ij+3;i++) { if(g==i) return 1; } return 0; } 四、仿真结果及结论 五、总结与体会 在上课听完老师讲解之后觉得lzw编码的过程很复杂,感觉也很难理解。通过这次的实验对lzw编码的整个编码过程和译码过程有了深入的理解。对其中信息前缀和当前码字关系,以及怎么变化也有了理解和体会。开始虽然理解了但在以前学习的C语言基础上对字符串处理始终不熟悉,,也不知如何去生成字符串数组和使用字符串数组,通过老师介绍以及在网上查阅资料。开始有想过用andriod页面布局开控制输入输出以及处理字符串数组,但是因为android对程序过程以及在变换当前缀和输入码字不好解决就放弃了,依旧采用了c++,利用了字符串和字符数组来结合处理。通过这次实验对比了面向过程和面向对象这两门语言,学会了灵活使用字符串和字符数组。通过这次实验理解了通过类设置一类实体属性,从而简化了这一类实体处理。 六、主要仿真代码 #includeiostream #includestring using namespace std; const int N=200; class LZW { private: string Dic[200]; public: int codes[N]; LZW(){ Dic[0]=a; Dic[1]=b; Dic[2]=c; string *p=Dic; } //void decode(int codes[N]); void decode(int codes[ ]); void code(string cs[N]); int StringIsDic(string e); int codeDic(s

您可能关注的文档

文档评论(0)

haihang2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档