通过将 '0' 附加到较小长度的字符串来计算汉明距离

标签 c string

我必须找到两个代码之间的汉明距离。

例如,如果我输入:

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。如评论中所述,您还应该更改 len1len2idiff 的类型, countj 因为您将它们用作数字值,而不是字符。例如,您可以为此使用 intsize_t 类型。

int main()
{
    char a[20],b[20];
    int len1, len2, i, diff, count=0, j;
    // Rest of your code
}

关于通过将 '0' 附加到较小长度的字符串来计算汉明距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44046601/

相关文章:

string - 无法将类型 'Range<Int>' 的值转换为预期的参数类型 'Range<Index>'(又名 'Range<String.CharacterView.Index>')

c++ - 将字符串的 UNIX 行结尾转换为 DOS 行结尾

java - 如何从字符串中提取日期并将其放入Java中的日期变量

c - "go-vgo/robotgo"库构建错误

mysql - 使用 C 访问数据库

c - 找到所有 m 子序列的最大加权和

Java-替换多个字符

objective-c - 如何在 Objective C 中执行 chmod()

c - 堆代码行解释

java - Java中字符串连接时如何跳过特定字符串?