• 大小: 31KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-09
  • 语言: C/C++
  • 标签: 源代码  c语言  

资源简介

信息论与编码的实验,实现唯一可译码的判断,c语言版本,含实验报告。

资源截图

代码片段和文件信息

#include
#include
#include
int Nmax=0;
char q[100][100];
char m[300][100];
bool flag;
/*字符串c与d的比较*/ 
void mycmp(char c[]char d[])
{
    int ijk;
    for(i=0;;i++)
    {
        if(c[i]==‘\0‘&&d[i]==‘\0‘)//2字符串一样,跳出 
        break;
        if(c[i]==‘\0‘)//d字符串比c字符串长,且c字符串的前面与d字符串一样 ,并把d字符串多余的存到m[i]中 
        {
            for(j=i;d[j]!=‘\0‘;j++)
            m[max][j-i]=d[j];
            m[max][j-i]=‘\0‘;
            for(k=0;k            {
                if(strcmp(m[max]m[k])==0)
                {
                    max--;break;
                }
            }
            max++;
            break;
        }
        if(d[i]==‘\0‘)//c字符串比d字符串长,且d字符串的前面与c字符串一样 ,并把c字符串多余的存到m[i]中 
        {
            for(j=i;c[j]!=‘\0‘;j++)
            m[max][j-i]=c[j];
            m[max][j-i]=‘\0‘;
            for(k=0;k            {
                if(strcmp(m[max]m[k])==0)
                {
                    max--;break;
                }
            }
            max++;
            break;
        }
        if(c[i]!=d[i])//字符不一样了也退出 
        break;
    }
}
/*主函数*/
main()
{
    int ij;
    printf(“please input the number of the code:“);//输入码得个数 
    scanf(“%d“&N);
    flag=false;
    printf(“please input each code:“);//输入N个码    
    for(i=0;i    {
        scanf(“%s“&q[i]);
    }
    for(i=0;i    for(j=i+1;j    {
        if(strcmp(q[i]q[j])==0)
        {flag=true;break;}
    }
    if(flag==true)//如果码本身有重复,就可以断定它不是唯一可译码 
    {
        printf(“这不是唯一可译码。\n“);
    }
    else
    {
     for(i=0;i     {
         for(j=i+1;j         {
             mycmp(q[i]q[j]);
         }
     }
     for(i=0;;i++)//根据原始码与s[i]生成s[i+1]也放入m[i] 
     {
         int s=0;
         for(j=0;j         {
            if(i==max)
             { s=1;break;}
            else
             mycmp(m[i]q[j]);
         }
         if(s==1)break;
     }
     for(i=0;i     {
         for(j=0;j         {
             if(strcmp(m[i]q[j])==0)
             {
                 flag=true;
                 break;
             }
         }
     }
     if(flag==true)
     {
         printf(“这不是唯一可译码。\n“);
     }
     else
         printf(“这是唯一可译码。\n“);
    }
}

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       2695  2011-06-08 12:44  唯一可译码\唯一可译码.c

     文件      69632  2011-06-15 18:02  唯一可译码\唯一可译码_report.doc

     目录          0  2011-06-15 18:02  唯一可译码

----------- ---------  ---------- -----  ----

                72327                    3


评论

共有 条评论