我目前正在使用一个给我的bigint类。我成功地创建了加法减法和乘法操作,但我似乎无法破解除法运算符。Bigint分部总是返回零
我不会因为获得剩余的商数而感到兴奋,我只对小数点以前的数字感兴趣。我也加了一些检查。第一个如果第二个数字是零,那么它将返回零。第二个检查是否如果第二个数字大于第一个返回零,因为我对低于零的数字不感兴趣。
下面是我的代码和我迄今为止对这个大int运算符所做的工作。
Bigint operator/ (const Bigint& n1, const Bigint& n2) {
Bigint final;
Bigint quotient;
int count = 0;
Bigint result = n1;
Bigint check;
for(int i = 0; i < DIGITS; ++i) {
if(n2.digits[i] == 0){
quotient = 0;
}
else if (n2.digits[i] > n1.digits[i]){
quotient = 0;
}
else {
while (result.digits[0] > 0){
for(int i = 0; i < DIGITS; ++i){
result.digits[i] -= n2.digits[i];
if(result.digits[i] < 0){
result.digits[i] += 10;
result.digits[i+1] = -1;
}
}
count++;
}
for(int j = 1; j < DIGITS; j++){
final.digits[j] = count % 10;
count = count/10;
}
return final;
}
}
return final;
}
无论我进入我的程序,它总是返回一个零,我已经在这个几个小时,不能为我的生活破解它。任何帮助是极大的赞赏。
预期效果的一些例子:
987654321/123456789 = 8
123425/545 = 226
干杯
如果您逐行浏览调试器中的代码,逐行查看所有变量及其值,看起来什么都没有关闭?计算中的所有步骤都是正确的? –
好的,那么** //占位符代码的哪一部分:只有当n2是1时才正确**你认为我们应该忽略吗? –
@ n.m。对不起,忽略那个评论,我以为我已经删除它。 – websafepalletone