检查添加两个数字的相应十进制数字是否在每个地方产生相同的值

时间:2017-08-17 19:20:04

标签: c algorithm

我需要检查两个数字中的十进制数字的垂直和是否在每个元素中相同。

例如:Number1 = 153,Number2 = 345.分别添加小数位数:

1 + 3 = 4
5 + 4 = 9
3 + 5 = 8

所以153和345不匹配。

但如果Number1 = 543且Number2 = 456:

5 + 4 = 9
4 + 5 = 9
3 + 6 = 9

数字总和均为9,因此功能结果应为true

好像我需要使用模数和while循环?

非常感谢任何输入!

2 个答案:

答案 0 :(得分:1)

使用伪代码,我相信它可以实现这样的目标。函数返回0 = false,1 = true。我不确定mod是否是C函数,但是因为你只要求" C-like"我认为它应该足够了。

int compare(int a, int b)
{
    int compareTo = -1;
    while(a > 0 && b > 0)
    {
        int temp = (a mod 10) + (b mod 10);
        if (compareTo == -1)
        {
            compareTo = temp;
        }
        else 
        {
            if (compareTo != temp) 
                return 0;
        }
        a /= 10;
        b /= 10;
    }
    return 1;
}

根据@ Peter的评论进行编辑:

unsigned int compare(unsigned int a, unsigned int b)
{
    unsigned int compareTo = (a % 10) + (b % 10);
    a /= 10;
    b /= 10;  
    while(a > 0 && b > 0)
    {
        unsigned int temp = (a % 10) + (b % 10);

        if (compareTo != temp)
            return 0;

        a /= 10;
        b /= 10;  
    }
    return 1;
}

答案 1 :(得分:0)

我用伪代码编写了这个,因为我对Java更熟悉。我也没有说明这些数字是不同的长度。假设它们的位数相同,则此流程应该有效:

int number1 = 153;
int number2 = 345;
int number1Length = String.valueOf(number1).length();
int number2Length = String.valueOf(number2).length();
int digit1Sum = null;
int digit2Sum = null;
int digit3Sum = null;
for (int i = 0, n = number1Length; i < n; i++){
    String character1Iterator = String.valueOf(number1).getChar(i);
    String character2Iterator = String.valueOf(number2).getChar(i);

   digit{i}Sum = Integer.parseInt(character1Iterator) + Integer.parseInt(character2Iterator);
}

boolean digitsEqual = false;
if(digit1Sum == digit2Sum && digit1Sum == digit3Sum){
    return true;
}

您可能需要稍微重构以适应您的需要,使用不同数量的数字,以适应C等,但这基本上是抓住每个数字的第一个值并添加它。然后它遍历每个数字并添加它们直到所有数字位置相加。然后检查以确保它们都是平等的。