我必须找到两个代码之间的汉明距离。
例如,如果我输入:
a= 10
b= 1010
通过附加 0 自动使 a 等于字符串 b 的长度。
所以输入应该变成:
a=0010
b=1010
但我得到的是:
a = 001010
b = 1010
这是我的代码:
#include<stdio.h>
#include<string.h>
void main()
{
char a[20],b[20],len1,len2,i,diff,count=0,j;
printf("Enter the first binary string\n");
scanf("%s",a);
printf("Enter the second binary string\n");
scanf("%s",b);
len1 = strlen(a);
len2 = strlen(b);
if(len1>len2)
{
diff = len1-len2;
for(i=0;i<len1;i++)
{
b[i+diff]=b[i];
}
j=i+diff;
b[j]='\0';
for(i=0;i<diff;i++)
{
b[i]='0';
}
}
else
{
diff = len2-len1;
for(i=0;i<len2;i++)
{
a[i+diff]=a[i];
}
j=i+diff;
a[j]='\0';
for(i=0;i<diff;i++)
{
a[i]='0';
}
}
printf("\nCodes are\n");
printf("a=%s\n",a);
printf("\nb=%s\n",b);
for(i=0;a[i]!='\0';i++)
{
if(a[i]!=b[i])
{
count++;
}
}
printf("hammung distance between two code word is %d\n",count);
}
谁能帮我解决这个问题?
在您将旧选项卡的内容向右移动以插入零的两个 for
循环中,您反转了长度。
第一个循环应该是:
for(i=0;i<len2;i++)
{
b[i+diff]=b[i];
}
第二个:
for(i=0;i<len1;i++)
{
a[i+diff]=a[i];
}
尝试之后:
Codes are
a=0010
b=1010
hammung distance between two code word is 1
另外,主函数应该返回一个int
,而不是void
。如评论中所述,您还应该更改 len1
、len2
、i
、diff
的类型, count
和 j
因为您将它们用作数字值,而不是字符。例如,您可以为此使用 int
或 size_t
类型。
int main()
{
char a[20],b[20];
int len1, len2, i, diff, count=0, j;
// Rest of your code
}
我是一名优秀的程序员,十分优秀!