2016-05-05 8 views
-6

私はC言語での初心者です.2つの配列を加算、減算、乗算して別の配列に配置する必要があります。 add関数では、オーバーフローが発生した場合にfalseを返す必要があります。 sub関数では、n1がn2未満の場合はfalseを返す必要があります。 乗算関数では、オーバーフローが発生した場合にfalseを返す必要があります。 私は0で、次の基数、最初のi完全な配列を持っているし、その後、最小重量の数iが234を入れた場合のBigIntは、インデックス79 0000 ... 00234インデックス0Add、Sub、Multiply Arrays

#define MaxDigits 80 

typedef unsigned char byte; 
typedef byte BigInt [MaxDigits]; 

になりますインデックスには0例ですこれは、私は1つを追加しなければならないものである:

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

サブ1:

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

私はあなたが私は本当にapreciateだろう私を助けることができれば本当に、boolsで作業する方法を知っている知りません。 がさらにについてあなた

+2

ようなことができ 'BigInt'は何ですか? –

+0

'BigInt'型の宣言? –

+0

#define MaxDigits 80、typedefバイトBigInt [MaxDigits]; –

答えて

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