負と正の両方を処理できる加算を使用して、2 つの整数の積を求める関数を作成したいと考えています。
これは私がこれまでに持っているコードです...結果としてクレイジーな数字が得られます..私は初心者です..ありがとう
double multi(double n1, n2)
{
double answer(0), i=0;
do
{
answer += n1; i++;
} while (i < n2);
return answer;
}
負と正の両方を処理できる加算を使用して、2 つの整数の積を求める関数を作成したいと考えています。
これは私がこれまでに持っているコードです...結果としてクレイジーな数字が得られます..私は初心者です..ありがとう
double multi(double n1, n2)
{
double answer(0), i=0;
do
{
answer += n1; i++;
} while (i < n2);
return answer;
}
double の代わりに整数を使用して開始し、実際に両方をパラメーターとして渡すことができます....
int multi( int x, int y )
{
int answer = 0;
// stuff goes here...
return answer;
}
これは宿題だと思うので、コードを逐語的に説明するつもりはありません...
ただし、1 つの値が負の場合、同じ値が正の場合、結果は答えに対して否定されることを考慮してください。事実上、足し算x
を何回も行う場合はy
、両方の符号を反転させx
、y
ify
が負になるようにすることができます。それは答えを否定し、y
ループオーバーする肯定を与えます。
最適化は、2 つの値のどちらが大きいかを確認し、小さい方をループ変数として使用することです。
..はい、これはうーん..しかし、申し訳ありませんが、私はあなたが意味することを理解していません..
2 つの整数X
とがあるとしY
ます。が正の場合Y
、簡単に確認できます。
X * Y = (X + X + X + X + ...)
Y
では、が負の場合はどうでしょうか。私は-Y
それを示すために使用するつもりです:
X * -Y = -(X * Y)
= -(X + X + X + X + ...)
= (-X - X - X - X - ...)
= ((-X) + (-X) + (-X) + (-X) + ...)
したがって、 が正の場合、のコピーをY
一緒に追加します。が負の場合、 のコピーを一緒に追加します。Y
X
Y
-Y
-X
それでも解決しない場合は、しばらく座って考えてみることをお勧めします。