我是C语言的初学者,我必须做一个函数来添加,减去和乘两个数组并将它放在另一个数组中。 在添加函数中如果发生溢出则必须返回false。 如果n1小于n2,则子函数必须返回false。 在乘法函数中如果发生溢出则必须返回false。 我有以下基数,第一个是完整数组0,然后是最小数量权重在索引0中。例如,如果我把234放大,那么BigInt将是索引79 0000 ... 00234索引0
#define MaxDigits 80
typedef unsigned char byte;
typedef byte BigInt [MaxDigits];
这是我必须添加一个:
bool addBigInt( const BigInt n1, const BigInt n2, BigInt res ){
int carry=0;
for(int i=0;i<80;++i){
if(n1[i]+n2[i]>9){
carry=res[i]%10;
}
res[i]=n1[i]+n2[i]+carry;
}
if((n1[79]+n2[79]>9) ||(n1[78]+n2[78]>10 && n1[79]+n2[79]>8) ){
return false;
}
else{
return true;
}
}
Sub one:
bool subBigInt( const BigInt n1, const BigInt n2, BigInt res ) {
for(int i=0;i<80;++i){
res[i]=n1[i]-n2[i];
}
for(int i=80;i>0;i--){
if(n1[i]-n2[i]<0){
return false;
}
}
return true;
}
我不知道真的知道如何使用bool,如果你可以帮助我,我会真的很赞成。 谢谢
答案 0 :(得分:1)
对于添加,它可能是这样的
bool addBigInt( const BigInt n1, const BigInt n2, BigInt res ) {
int i, sum, carry = 0;
for(i=0; i<MaxDigits; i++) {
sum = n1[i] + n2[i] + carry;
res[i] = sum % 10;
carry = sum / 10;
}
return carry == 0;
}