这个程序无法完全翻译成c,无法翻译的地方只能用自然语言代替
#include
#include
const int N=200;
Struct LZW
{
只有本结构体才能使用的:
string Dic[200];
int code[N];
任何地方都能使用的:
实例化本结构体时就执行:{
Dic[0]='A';
Dic[1]='B';
Dic[2]='C';
string *p=Dic;
}
void Bianma(string cs[N]);
int IsDic(string e);
int codeDic(string f);
void display(int g);
};
void LZW::Bianma(string cs[N]){
string P,C,K;
P=cs[0];
int l=0;
for(int i=1;i
K=P+C;
if(IsDic(K))
P=K;
else{
code[l]=codeDic(P);
Dic[3+l]=K;
P=C;
l++;
}
if(N-1==i)
code[l]=codeDic(P);
}
display(l);
}
int LZW::IsDic(string e){
for(int b=0; b<200; b++)
{
if(e==Dic[b]) return 1;
}
return 0;
}
int LZW::codeDic(string f)
{
int w=0;
for(int y=0;y<200;y++)
if(f==Dic[y]){
w=y+1;
break;
}
return w;
}
void LZW::display(int g){
print("经过LZW编码后的码子如下:\n");
for(int i=0;i<=g;i++)
print("%d",code[i]);
print("\n");
print("经LZW编码后的词典如下:\n");
for(int r=0;r
}
int main(){
LZW t;
string CSstream[N];
int length;
print("请输入所求码子序列的长度:");
scanf("%d",&length);
while(length>=N)
{
print("该长度太长,请重新输入:");
scanf("%d",&length);
}
print("请输入要进行LZW编码的字符序列:\n");
for(int a=0;a
t.Bianma(CSstream);
return 0;
}
大哥(姐),写了这么久了,给个最佳吧,要是还有什么问题,请追问我
我的意思是函数里面再定义函数?????
这个???实在抱歉,C/C++都不允许这样做~~~
如果你想把那几个函数封装起来,直接定义成private不就行了?就能保证只有内部成员才能调用。
c语言是不支持面向对象的语言,所以那个class类翻译不了。
没法翻译啊