2016-08-06 13 views
-3

にint型戻りそうImは2つの配列の2つの数値をmultiplingのコードを構築しようと.. 例えば アレイ1:2 1 2 3 アレイ:4 5 6 ので、私は、配列を返すことができます1として4 10 18乗算2つの文字とアレイ

BigNumber BigNumber::Multiply(const BigNumber & b) 

float x = 0; 

for (int i = 0; i < size; i++) 
{ 
    x = (arr[i])*(b.arr[i]); 
     arr[i] = (x/48); 
} 


return *this; 

私は希望の結果の+1または-1を与え続けます。

+2

は、このような単純な正しい表現を使用してみてください? ( 'arr'はタイトルから' char'の配列であると仮定します) – MikeCAT

+0

IveはINTも試しましたが、arr [i]はcharsです – Stfu

+0

'arr [i] * = b.arr [i]'? – PcAF

答えて

2

ループ内の計算が間違っています。

aで表される数字を表すにはaiとし、に対応するbiのようにしてください。 48は文字0を表すために使用されると仮定すると、

、あなたの計算は

(ai+48)*(bi+48)/48 
= (ai*bi)/48 + (ai+bi) + 48 

でこれはほかではなく、掛け算ようです。地球上の `float`を整数multplicationのstoreing結果のために使用されているのはなぜ

for (int i = 0; i < size; i++) 
{ 
    arr[i] = (arr[i]-'0') * (b.arr[i]-'0') + '0'; 
}