【发布时间】:2025-12-09 21:05:02
【问题描述】:
所以这里我有两个类,关于 Safearray 和一个 bigint 计算器(SafeArray 不完美,但它可以达到它的目的)我真正需要帮助的是我的乘法算法,当我编译时没有任何反应,我认为该算法主要是对(如果不是,请帮我解决它)但我认为问题主要在于返回并打印最终答案。任何帮助将不胜感激,谢谢。
void multiply(const bigint &A)
{
bigint temp1; // bigint with value 0
int carry = 0;
int shift = 0;
bigint temp2;
for(int j = size-1; j >= 0; j--) //no member size in bigint
{
for(int i=size-1; i>=0; i--)
{
// bigint with value 0 and size: size + A.size
int result = (arr->get(i)*A.arr->get(j)+carry);
if(size - shift - (i - size-1) >= 0)
temp2.arr->set(size - shift - (i - size-1), result%10);
else
break;
carry=result/10;
}
shift++;
temp1.add_pos(temp2);
}
this->assign(temp1);
}
【问题讨论】:
-
查看您的代码,不清楚您是在
arr[0]中存储最高有效位还是在arr[0]中存储最低有效位。如果您将最低有效位存储在arr[0]中,您的一些逻辑将被简化,并且更易于调试。