【发布时间】:2014-07-14 07:05:13
【问题描述】:
我有两个大小为 40 的整数数组。它们是 HugeInteger 类的对象。我需要减去它们。我的代码是
HugeInteger HugeInteger::subtract(HugeInteger other)
{
int diff;
HugeInteger result;
for (int i=0; i<MAXDIGIT; i++)
{
diff=this ->myArray[i]-other.myArray[i];
if (other.myArray[i] < this -> myArray[i])
{
result.myArray[i]=diff;
}
else
{
result.myArray[i]=other.myArray[i]-this->myArray[i];
}
}
return result;
}
问题是上面的代码没有给我正确的答案。我用计算器查了一下,有些数字是对的,有些是错的。我认为问题可能在于如果减法会导致数字为负,我如何处理借款。有人能帮助我吗?我已经尝试了 8 个小时。
【问题讨论】:
-
什么是
HugeInteger? -
您的
diff的宽度是否足以容纳减法结果? -
去掉
diff,直接计算结果,问题还存在吗? -
“问题可能是我如何处理借款”。相反,问题在于您根本不处理借款。要正确编程,您需要回忆一下如何用纸和铅笔做减法,而不是用计算器。
-
直接计算问题依然存在。 HugeInteger 是一个类,数组是 HugeInteger 对象
标签: c++ arrays subtraction