私は、msbを整列して2つの整数を加算する方法(できれば再帰的)を探しています。例えばMSBの整列した追加
:125 + 25 = 375
Iを効果的にそれらを整列させるために数字を逆にしようとしたが、搬送すべて間違っているであろう。すなわち、 526(625)+ 05(50)= 531
私は、msbを整列して2つの整数を加算する方法(できれば再帰的)を探しています。例えばMSBの整列した追加
:125 + 25 = 375
Iを効果的にそれらを整列させるために数字を逆にしようとしたが、搬送すべて間違っているであろう。すなわち、 526(625)+ 05(50)= 531
1)一方/ 10ループ
2)取得に差
3)乗算最小数によってを使用して、両方の数値の桁数を計算します10 ^違い
4)あなたは、このためのmath.hをインクルードする必要があります一緒に
これをいくつかのコードでチェックしたところ、 – Jarann
それらを追加します。 mとnが自然数であると仮定すると、以下の式は小さい方の数字に10を掛けて(必要であれば)、大きい方と同じ桁数を持つようになるまで動作します。
int funkyAdd (int m, int n)
{
if ((m<=0)||(n<=0)){return -1;}
int smaller=std::min(m,n);
int larger=std::max(m,n);
while (floor(log10(smaller))<floor(log10(larger))){smaller*=10;};
return (smaller+larger);
}
最初の問題として、どのようにして '0600'(先行ゼロを含む)を表現する予定ですか? –
@IgorTandetnik私のコードでは、これらの数値を特定の値で計算し、先行ゼロは既知です。 some_constant * x – Jarann
各数値以下の10のべき乗を見つけ、小さい方の2つに10の2つの累乗の除算を掛けて、大きい方を加えます。 – GurV