将两个字符相乘并将int返回到数组

时间:2016-08-06 14:41:11

标签: c++ arrays

所以我试图构建一个代码,用于将两个数组的两个数相乘。 例如 阵列1:1 2 3 阵列2:4 5 6 所以我可以将数组1返回为:4 10 18

BigNumber BigNumber::Multiply(const BigNumber & b)

float x = 0;

for (int i = 0; i < size; i++)
{
    x = (arr[i])*(b.arr[i]);
        arr[i] = (x / 48);
}


return *this;

它一直给我+1或-1的想要结果。

1 个答案:

答案 0 :(得分:2)

循环内的计算错误。

让我使用ai来表示字符a所代表的数字,并使用与bi对应的b

假设48用于表示字符0,则计算为

  (ai+48)*(bi+48)/48
= (ai*bi)/48 + (ai+bi) + 48

这似乎是补充,而不是乘法。

尝试使用这样一个简单的正确表达式:

for (int i = 0; i < size; i++)
{
    arr[i] =  (arr[i]-'0') * (b.arr[i]-'0') + '0';
}