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

📄 uncompress.cpp

📁 自己用c语言编的算术编码压缩程序 供大家参考学习
💻 CPP
字号:
#include <iostream.h>
#include <stdio.h>
int main()
{
begin:
	const int n=5;
	int sum1=125;
	//初始化数组
	int b[n];
	for(int i=0;i<=n-1;i++)
	{
		b[i]=1;
	}
	double d=double(1)/n;
	double a1[n],a2[n];
	for (i=0;i<=n-1;i++)
	{	
		a1[i]=d*i;
		a2[i]=d*(i+1);
	}	

	for (i=0;i<=n-1;i++)
	{
		cout<<b[i]<<"\t"<<a1[i]<<"\t"<<a2[i]<<endl;	
	}

	//输入小数
	double f;
	cin>>f;
uncompress:
	int k=0;
	for(i=0;i<=n-1;i++)
	{
		if(f>a1[i] && f<a2[i])
		{
			k=i;
			break;
		}
		
	}
	cout<<k<<" ";
	int sum=0;
	for(i=0;i<=n-1;i++)
	{
		sum+=b[i];
	}
	if(sum==sum1-1)
		return 1;
	b[k]++;
	//求区间的子区间
	sum=0;
	for(i=0;i<=n-1;i++)
	{	
		sum+=b[i];
	}
	double dint=a2[k]-a1[k];
	double subint=dint/sum;
	a1[0]=a1[k];
	a2[n-1]=a2[k];
	int sumb=0;
	for(i=0;i<=n-2;i++)
	{
		sumb+=b[i];	
		double h=a1[0]+subint*sumb;
		a2[i]=h;
		a1[i+1]=h;
	}
	 
	goto uncompress;
	goto begin;

	return 0;
}

⌨️ 快捷键说明

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