Loops 比较两个数字';位置符号

Loops 比较两个数字';位置符号,loops,variables,for-loop,Loops,Variables,For Loop,给定两个数字。我想比较两个数字的位置符号 说1号是25000 2号是25000 结果就是面具。如果每个位置匹配,则遮罩(在本例中)为:6 说1号是:00000 2号是22220 然后掩码为1,因为只有第一位匹配 我的逻辑是,如果两个数字的长度不相等,那么它会打印出它不相等,并且什么也不做。但如果它们匹配,我就把它们转换成整数。然后,我用2检查循环,如果它们各自的数字相等。如果是,那么我向maszk变量添加一个 下面我的代码是错误的(我已经输入了标题并声明了变量和getline。)有人能帮忙吗 #

给定两个数字。我想比较两个数字的位置符号

说1号是25000 2号是25000

结果就是面具。如果每个位置匹配,则遮罩(在本例中)为:6

说1号是:00000 2号是22220

然后掩码为1,因为只有第一位匹配

我的逻辑是,如果两个数字的长度不相等,那么它会打印出它不相等,并且什么也不做。但如果它们匹配,我就把它们转换成整数。然后,我用2检查循环,如果它们各自的数字相等。如果是,那么我向maszk变量添加一个

下面我的代码是错误的(我已经输入了标题并声明了变量和getline。)有人能帮忙吗

#include <stdio.h>
if( strlen(s) != strlen(s2) ) printf("The length doesn't match! \n");


else {


for(i=0; i<=20; i++)
{

 for(j=0; j<=20; j++)
    {
    szam1[i] = atoi(s);
    szam2[j] = atoi(s2);

    }
  if( szam1[i] == szam2[j] ) maszk++;

}
}

printf("The mask of the two numbers: %d", mask);

}
#包括
如果(strlen(s)!=strlen(s2))printf(“长度不匹配!\n”);
否则{

对于(i=0;i我不知道您的bug在哪里,但我想出了这个算法——可能更简单:

Given two numbers A and B...
m = max(digits(A), digits(B))
maxMask = m + 1
s = A-B 
if (s == 0)
    mask = maxMask
else
    mask = 0
    loop m times
      if (s % 10 == 0)
        mask++
        s /= 10
      else
        break
也就是说,减去它们。如果结果为零,则掩码为1+最大位数。如果不是,则掩码为结果的尾随零的数量


也可以考虑重命名该变量。“掩码”是常用的意思。

我不知道你的bug在哪里,但是我想到了这个算法——可能更简单:

Given two numbers A and B...
m = max(digits(A), digits(B))
maxMask = m + 1
s = A-B 
if (s == 0)
    mask = maxMask
else
    mask = 0
    loop m times
      if (s % 10 == 0)
        mask++
        s /= 10
      else
        break
也就是说,减去它们。如果结果为零,则掩码为1+最大位数。如果不是,则掩码为结果的尾随零的数量


也可以考虑重命名该变量。“掩码”是经常使用的。

将数字保持为字符串,使用<代码>字符()/代码>从两个字符串的结尾开始,并更新<代码>掩码< /代码>直到条件正确。对于这个循环,您不需要两个。我不清楚为什么在第一个示例中结果是6。(完全一致)。在(十进制)表示法中毕竟只有五个字符。在第二个示例中,结果1的唯一一致性位于第一位(单位数字)。将数字保留为字符串,使用
charAt()
从两个字符串的结尾开始,更新
掩码
,直到条件为真。不需要两个for循环。我不清楚为什么第一个示例中的结果是6(完全一致)。毕竟(十进制)中只有五个字符表示。在第二个示例中,结果1中唯一的协议位于第一位(单位数字)。