算术编码的C++实现.doc

算术编码的C++实现.doc

ID:50978852

大小:46.50 KB

页数:5页

时间:2020-03-16

算术编码的C++实现.doc_第1页
算术编码的C++实现.doc_第2页
算术编码的C++实现.doc_第3页
算术编码的C++实现.doc_第4页
算术编码的C++实现.doc_第5页
资源描述:

《算术编码的C++实现.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、算术编码的C++实现#include#include#include#includeusingnamespacestd;#defineN50//输入的字符应该不超过50个structL//结构用于求各字符及其概率{charch;//存储出现的字符(不重复)intnum;//存储字符出现的次数doublef;//存储字符的概率};//显示信息voiddisp();//求概率函数,输入:字符串;输出:字符数组、字符的概率数组;返回:数组长度;i

2、ntproba(stringstr,charc[],longdoublep[],intcount);//求概率的辅助函数intsearch(vectorarch,char,intn);//编码函数,输入:字符串,字符数组,概率数组,以及数组长度;输出:编码结果longdoublebma(charc[],longdoublep[],stringstr,intnumber,intsize);//译码函数,输入:编码结果,字符串,字符数组,概率数组,以及它们的长度;输出:字符串//该函数可以用于检测编码是否正

3、确voidyma(stringstr,charc[],longdoublep[],intnumber,intsize,longdoubleinput);intmain(){stringstr;//输入要编码的String类型字符串intnumber=0,size=0;//number--字符串中不重复的字符个数;size--字符串长度charc[N];//用于存储不重复的字符longdoublep[N],output;//p[N]--不重复字符的概率,output--编码结果disp();cout<<"输入要

4、编码的字符串:";getline(cin,str);//输入要编码的字符串size=str.length();//字符串长度number=proba(str,c,p,size);//调用求概率函数,返回不重复字符的个数cout.setf(ios::fixed);//“魔法配方”规定了小数部分的个数cout.setf(ios::showpoint);//在此规定编码结果的小数部分有十个cout.precision(10);output=bma(c,p,str,number,size);//调用编码函数,返回编码

5、结果yma(str,c,p,number,size,output);//调用译码函数,输出要编码的字符串,//以验证编码是否正确return0;}//显示信息voiddisp(){cout<

6、n";cout<pt;//定义了结构类型的向量,用于同时存储不重复的字符和其概率Ltemp;//结构类型的变量temp.ch=str[0];//暂存字符串的第一个字符,它的个数暂设为1temp.

7、num=1;temp.f=0.0;pt.push_back(temp);//将该字符及其个数压入向量for(inti=1;i

8、=0){pt[k].num++;break;}else{pt.push_back(temp);break;}}}for(i=0;i

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。