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

📄 lzwcode.cpp

📁 LZW编码是压缩编码中复杂的
💻 CPP
字号:
#include<iostream.h>
#include<string.h>
#include<conio.h>
void main()
{
//初始化变量.
begin:
	int	array_length,unit_length,el_unit_length;
	int	tmp_length2=1,ch_tmp_flag,w_length=1,temp_code=1;
	char	str_array[96],str_unit[192][14],str_element[96];
	char	ch_temp,str_tmp_w[14],ch_tmp_k,ch_again;
//释放变量的空间
	for(int id=0;id<96;id++)
			{str_array[id]=NULL;str_element[id]=NULL;}
	for(id=0;id<191;id++)
	{
		for(int j=0;j<14;j++)
			{str_unit[id][j]=NULL;}
	}
//输入数据
	cout<<"Please enter the number:\t";
	cin>>str_array;
	array_length=strlen(str_array);
	cout<<"The code's length:\t"<<array_length<<endl;
//判溢出
	if(array_length>96)
		{cout<<"Float!"<<endl;}
	else if(array_length>0&&array_length<=96)
	{
//获取单字符
		str_element[0]=str_array[0];
		for(int i=0;i<array_length;i++)
		{
			unit_length=tmp_length2;
			ch_temp=str_array[i];
			for(int i1=0;i1<unit_length;i1++)
			{
				if(ch_temp==str_element[i1])
					{ch_tmp_flag=0;}
				else	{ch_tmp_flag=1;}
			}
			if(ch_tmp_flag==1)
			{
				str_element[unit_length]=ch_temp;
				tmp_length2=tmp_length2+1;
			}
		}
		for(i=0;i<tmp_length2;i++)
			{str_unit[i][0]=str_element[i];}
		unit_length=tmp_length2;
		cout<<"The result:\t";
//释放空间
		for(int i4=0;i4<14;i4++)
			{str_tmp_w[i4]=NULL;}
//获取多字符字串.
		for(i=0;i<=array_length;i++)
		{
			if(w_length==1)
			{
				if(i==0)
				{ch_tmp_k=str_array[i];}
				if(i!=0)
				{ch_tmp_k=str_array[i-1];i--;}
			}
			if(w_length>1)
				{ch_tmp_k=str_array[i];}
			str_tmp_w[w_length-1]=ch_tmp_k;
			w_length++;
			for(int i1=0;i1<unit_length;i1++)
			{
				for(int i2=0;i2<w_length;i2++)
				{
					if(str_tmp_w[i2]==str_unit[i1][i2])
						{ch_tmp_flag=1;}
					else	{ch_tmp_flag=0;break;}
				}
				if(ch_tmp_flag==1)
					{temp_code=i1+1;break;}
			}
			if(i==array_length)
				{cout<<temp_code<<" ";}
			if(ch_tmp_flag==0)
			{
				cout<<temp_code<<" ";
				for(int i3=0;i3<w_length;i3++)
					{str_unit[unit_length][i3]=str_tmp_w[i3];}
//释放空间
				for(int i4=0;i4<14;i4++)
					{str_tmp_w[i4]=NULL;}
				unit_length=unit_length+1;
				w_length=1;
			}
		}
		cout<<endl;
//输出编码字串表.
		cout<<"编码字串表:"<<endl;
		for(int j=0;j<unit_length;j++)
		{
			cout<<j+1<<" - ";
			el_unit_length=strlen(str_unit[j]);
			for(int j1=0;j1<el_unit_length;j1++)
				{cout<<str_unit[j][j1];}
			cout<<endl;
		}
	}
//询问是否继续进行编码操作?
	cout<<"是否继续编码? (按回车键Enter继续,其它任意键退出)..."<<endl<<endl;
	ch_again=getch();
	if(ch_again==13)
		{goto begin;}
}

⌨️ 快捷键说明

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