📄 lzwcode.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 + -