資源簡介
信息論與編碼的實驗,實現唯一可譯碼的判斷,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
評論
共有 條評論