1 / 19
文档名称:

信息论实验报告.docx

格式:docx   大小:256KB   页数:19页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

信息论实验报告.docx

上传人:fengruiling 2022/7/25 文件大小:256 KB

下载得到文件列表

信息论实验报告.docx

相关文档

文档介绍

文档介绍:前言
信息论是现代通信与信息工程的理论基础。作为电子信息科学与技 术专业本科生的学科基础课,本课程主要讲授:信息的定义和测度、 信源和信息熵、连续熵和信息变差、信道和互信息、平均互信息和信 道容量、数据处理和信息测量理论、无失真信源编码理<>
struct strings
{
char *string;
struct strings *next;
};
struct strings Fstr, *Fh, *FP;
//输出当前集合
void outputstr(strings *str)
{
do
{
cout<<str->string<<endl;
str = str->next;
}while(str); cout<<endl;
}
inline int MIN(int a, int b)
{ return a>b?b:a; }
inline int MAX(int a, int b)
{ return a>b?a:b; } #define length_a (strlen(CP))
#define length_b (strlen(tempPtr)) //判断一个码是否在一个码集合中,在则返回0,不在返回1
int comparing(strings *st_string,char *code)
{
while(st_string->next)
{ st_string=st_string->next; if(!strcmp(st_string->string,code)) return 0;
}
return 1;
}
//判断两个码字是否一个是另一个的前缀,如果是则生成后缀码
void houzhui(char *CP,char *tempPtr)
{
if (!strcmp(CP,tempPtr))
{
coutvv"集合C和集合F中有相同码字:"vvendl
<<CP<<endl
<<"不是唯一可译码码组!"vvendl;
exit(1);
}
if (!strncmp(CP, tempPtr, MIN(length_a,length_b)))
{
struct strings *cp_temp; cp_temp=new (struct strings); cp_temp->next=NULL;
cp_temp->string=new char[abs(length_a-length_b)+1]; char *longstr;
longstr=(length_a>length_b ? CP : tempPtr);//将长度长的码赋给 longstr
//取出后缀
for (int k=MIN(length_a,length_b); kvMAX(length_a,length_b); k++) cp_temp->string[k - MIN(length_a,length_b)]=longstr[k];
cp_temp->string[abs(length_a-length_b)]=NULL;
//判断新生成的后缀码是否已在集合F里,不在则加入F集合
if(comparing(Fh,cp_temp->string))
{
FP->next=cp_temp; FP=FP->next;
}
}
}
void main()
{
//功能提示和程序初始化准备
coutvv"\t\t 唯一可译码的判断!\n"vvendl;
struct strings Cstr, *Ch, *CP,*tempPtr;
Ch=&Cstr;
CP=Ch;
Fh=&Fstr;
FP=Fh;
char c[]="C :";
Ch->string=new char[strlen(c)]; strcpy(Ch->string, c);
Ch->next=NULL;
char f[]="F :";
Fh->string=new char[strlen(f)]; strcpy(Fh->string, f);
Fh->next=NULL;
//输入待检测码的个数
int Cnum;
coutvv"输入待检测码的个数:";
cin>>Cnum;
coutvv"输入待检测码"vvendl;
for(int i=0; i<Cnum; i++)
{
cout<<i+1<<"
";
char tempstr[10];
cin>>tempstr;
CP->next=new (struct strings);
CP=CP->next;
CP->string=new char[strlen(te