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

📄 compress.cpp

📁 自己用c语言编的算术编码压缩程序 供大家参考学习
💻 CPP
字号:
#include <iostream.h>
#include <stdio.h>
#include <string.h>

int main()
{
	const int n=125;
	int b[n];
	double a1[n],a2[n];
	double d=double(1)/n;
	
	//初始化概率表
	for (int i=0;i<=n-1;i++)
	{	
		b[i]=1;
		a1[i]=d*i;
		a2[i]=d*(i+1);
	}
	//开始压缩
	int k=0;
b:
	cin>>k;
	if(k<0)
	{
		for(int j=0;j<n;j++)
		{
			a1[j]=a1[j]*100000000000000;
			a2[j]=a2[j]*100000000000000;
		}
		
		return 0;

	}
		
			
			b[k]++;
			int sumn=0;//输入字符数+n
			for (i=0;i<=n-1;i++) sumn+=b[i];
			double dint=a2[k]-a1[k];
			double subint=dint/sumn;
			a1[0]=a1[k];
			a2[n-1]=a2[k];
			double sumb=0;
			
			for(i=0;i<=n-2;i++)
			{
				sumb+=b[i];
				double h=a1[0]+subint*sumb;//-0.00000001;
				a2[i]=h;
			}
			sumb=0;
			for(i=1;i<=n-1;i++)
			{
				sumb+=b[i-1];
				double h=a1[0]+subint*sumb;//-0.00000001;
				a1[i]=h;
			}
			
		goto b;
	

}

⌨️ 快捷键说明

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