2016-08-06 7 views
-3

So versucht Im einen Code für multipling zwei Nummern von zwei Arrays .. beispiels Array 1 aufzubauen: 1 2 3 Array 2: 4 5 6 so kann i Array zurück 1 wie: 4 10 18Multipliziere zwei Zeichen und Rückgabe int Array

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; 

es hält mich ein +1 oder -1 des gewünschten Ergebnisses.

+2

Warum auf der Erde 'float' für storeing Ergebnisse integer multplication verwendet wird? (Angenommen, 'arr' ist ein Array von' char' aus dem Titel) – MikeCAT

+0

Ich habe es auch mit INT versucht, arr [i] sind Zeichen – Stfu

+0

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

Antwort

2

Die Berechnung in der Schleife ist falsch.

ich ai Lassen Sie verwenden, um die Anzahl von Zeichen a und wie diese zu bbi entsprechenden vertreten zu vertreten.

48 Unter der Annahme verwendet wird, Zeichen darzustellen 0, Ihre Berechnung ist

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

Dies scheint aber auch nicht Multiplikation.

Versuchen Sie, eine einfache richtigen Ausdruck wie folgt aus:

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