- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据压缩实验程序
游程编码
#includeiostream
using namespace std;
struct RLE{
public:
int sum; char num;};
int main(){
char mes[100]; RLE mes1[100]; static int n=0; int i,j,s=0; cout请输入消息序列:endl;
for(j=0;j100;j++)
{
cinmes[j]; if(mes[j]==.) break;}
for(i=0;i100;i++)
mes1[i].sum=1; mes1[n].num=mes[s];
for(i=1;ij;)
{ if(mes[i]==mes[s]){ mes1[n].sum+=1; i++; }
else{ s=i; i++; n++; mes1[n].num=mes[s]; }}
for(i=0;i=n;i++)
{ if(mes1[i].sum==1) {coutmes1[i].num;}
else if(mes1[i].sum==2)
{coutmes1[i].nummes1[i].num;}
Else {coutmes1[i].num_mes1[i].sum;}}
coutendl; return 0;
}
算术编码
#include iostream.h
#define M 100
#define N 4
class suanshu{
int count,length; char number[N],n;
long double chance[N],c; char code[M];
long double High,Low,high,low,d;
public:
suanshu() {High=0;Low=0;}
void get_number(); void get_code(); void coding(); ~suanshu(){} };
void suanshu::get_number()
{coutplease input the number and its chance.endl; for(int i=0;iN;i++)
{cinnc; number[i]=n; chance[i]=c; }
if(i==20)
coutthe number is full.endl; count=i; }
void suanshu::get_code(){
coutplease input the codes length:;
cinlength; while(length=M)
{coutthe length is too larger,please input a smaller one.;
cinlength;}
for(int i=0;ilength;i++){
cincode[i]; }}
void suanshu::coding() { int i,j=0;
for(i=0;icount;i++)
if(code[0]==number[i]) break;
while(ji)
Low+=chance[j++];
d=chance[j]; High=Low+d;
for(i=1;ilength;i++)
for(j=0;jcount;j++){
if(code[i]==number[j]) {
if(j==0){
low=Low; high=Low+chance[j]*d;
High=high;d*=chance[j];}
else{
float chance_l=0.0; for(int k=0;k=j-1;k++) chance_l+=chance[k];
low=Low+d*chance_l; high=Low+d*(chance_l+chance[j]);
Low=low; High=high; d*=chance[j];}}
else continue;}
coutthe result is:Lowendl;}
int main(){
suanshu a; a.get_number(); a.get_code(); a.coding();
return 0;
文档评论(0)