⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 compress.cpp

📁 利用Huffman编码的树的结构,进行数据的压缩,使一个复杂的数用一个小数来表示.
💻 CPP
字号:
/*
  数据压缩程序 compress
  作者:刘海波
  学号:20058002109
  说明:本程序可连续输入需要解压的数。
		每次输出都会有解压结果和新的上下限。
		输入的需要解压的字符为a b c,暂时不能是其他值
		例如:第一次输入b 输出为
				压缩后的上下限:
				_(a)0.333333--0.416617
				_(b)0.416617--0.583283
				_(c)0.583283--0.666667
				结果为:0.583283
			第二次输入c 输出为:
				压缩后的上下限:
				_(a)0.583283--0.59991
				_(b)0.59991--0.633263
				_(c)0.633263--0.666667
				结果为:0.633263
		输出的结果是解压程序的输入
*/

#include  <iostream.h>

void main()
{
	const n=3;
	double a[n];
	double b[n][2];
	for (int i=0;i<n;i++)
	{
		a[i]=1;
	}
	double d=1/(double)n;
	for (i=1;i<=n;i++)
	{
		b[i-1][0]=d*(i-1);
		b[i-1][1]=d*i;
	}
	char k;
	while(1)
	{
		cout<<"please input the data (a b or c):"<<endl;
		cin>>k;
		if(k<0)
			return;
		else 
			k=k-97;
			a[k]=a[k]+1;
		double sumn=0;
		for (i=0;i<n;i++)
			sumn=sumn+a[i];
		double inv ;
		inv =b[k][1]-b[k][0];
		double subint=inv/sumn;
		b[0][0]=b[k][0];
		b[n-1][1]=b[k][1];
		double sumb=0;
		double h;
		for (i=1;i<=n-1;i++)
		{
			sumb=sumb+a[i-1];
			h=b[0][0]+sumb*subint-0.00005;
			b[i-1][1]=h;
			b[i][0]=h;
		}
		cout<<"压缩后的上下限:"<<endl;
		char tt;
		for (i=0;i<n;i++)
		{
			tt=i+97;
			cout<<"_("<<tt<<")"<<b[i][0]<<"--"<<b[i][1]<<endl;
		}
		cout<<"结果为:"<<b[2][0]<<endl;
	}


}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -