添加,子,乘法数组

时间:2016-05-05 19:08:11

标签: c arrays

我是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,如果你可以帮助我,我会真的很赞成。 谢谢

1 个答案:

答案 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;
}