试图重写代码以包括模量运算符

Trying to rewrite a code to include the modulus operator

本文关键字:包括模 运算符 代码 重写      更新时间:2023-10-16

问题如下:

输入是" t"数量集的数量,其次是t 11位数字。代码中包含一个密码作为数组。该代码应该将后续数字从输入编号乘以从密码中的相应数字乘,从而创建了11个乘法的总和。之后,代码检查总和是否可以按10分组。

我编写了一个按预期工作的代码,但是我想简化此代码,特别是包括模量运算符而不是FMOD来从11位输入号提取数字。我尝试使用模量,但只能用于int。

我找到了一个简单反向订单数字提取器的代码(使用while循环和%10(,但是我在代码中实现它遇到了一些困难...任何帮助都将不胜感激。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
   long long int number;
   int cipher [11] = {1,3,7,9,1,3,7,9,1,3,1};
   int t, digit, sum;
   cin >> t;
   for (int i=0; i<t; i++)
   {
        sum = 0;
        cin >> number;
        for (int j=10; j>=0; j--)
        {
            digit = fmod(number/(pow(10,(10-j))),10);
            sum = sum + digit*cipher[j];
        }
        if (sum%10==0)
            cout << "Correct" << endl;
        else
            cout << "Incorrect" << endl;
   }
   return 0;
}

正确数字的一个示例是44051401458。我们假设所有输入号始终是11位数字。

我认为这是您所指的。您可以将数字除以10,这将移动小数点。由于您将数字定义为int(长int(,因此它不会变成浮标,因此任何小数点都可以删除,您可以自由使用模量。

#include <iostream>
#include <cmath>
using namespace std;
int main()
{
   long long int number;
   int cipher [11] = {1,3,7,9,1,3,7,9,1,3,1};
   int t, digit, sum;
   cin >> t;
   for (int i=0; i<t; i++)
   {
        sum = 0;
        cin >> number;
        for (int j=10; j>=0; j--)
        {
            digit = number%10;
            number = number/10;
            sum = sum + digit*cipher[j];
        }
        if (sum%10==0)
            cout << "Correct" << endl;
        else
            cout << "Incorrect" << endl;
   }
   return 0;
}