- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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
您可能关注的文档
- 2015年高考生物易错100条知识点精选.doc
- 2042化学试题.doc
- 2015届河北省唐山市高三9月模拟考试理综化学卷(word版,含解析).doc
- 2015届高三数学北师大版(通用,理)总复习讲义124离散型随机变量及其分布列.doc
- 2014高考政治试题分析及备考建议.doc
- 21核外电子运动状态.doc
- 2015浙江农林大学暨阳学院毕业设计论文系列材料.doc
- 21221-222频率分布表频率分布直方图与折线图教师版.doc
- 220KV输电线路施工组织设计(施工现场编制).doc
- 24小时冷冻水系统更改方案.doc
- 2025届高考语文复习:2024年12月《新闻周刊》人物话题总结与运用示例+课件.pptx
- 2025年河北中考历史一轮复习主题2 经济大危机和第二次世界大战课件.pptx
- 2025河北省中考二轮专题复习:中美关系课件.pptx
- 2025届高考专题训练:辨析并修改病句.pptx
- 2024年人教版英语中考总复习之动词时态专项复习课件.pptx
- 第7讲+中国共产党成立与新民主主义革命+合格考复习课件--2025年高二上学期统编版(2019)+必修中外历史纲要上.pptx
- 2025届高考诗歌鉴赏复习建议:四步读诗不放松,得分原在规范中+.pptx
- 2015年中考历史专题复习--从美国发展史探寻中美关系更迭课件.pptx
- +第三单元++近代经济、社会生活与教育文化事业的发展+课件+2025年湖北省中考备考历史一轮复习.pptx
- 2025年广东省深圳市中考历史一轮复习:第一单元+中国开始沦为半殖民地半封建社会++课件+.pptx
文档评论(0)