2016-12-11 1 views
0

私は、msbを整列して2つの整数を加算する方法(できれば再帰的)を探しています。例えばMSBの整列した追加

:125 + 25 = 375

Iを効果的にそれらを整列させるために数字を逆にしようとしたが、搬送すべて間違っているであろう。すなわち、 526(625)+ 05(50)= 531

+0

最初の問題として、どのようにして '0600'(先行ゼロを含む)を表現する予定ですか? –

+0

@IgorTandetnik私のコードでは、これらの数値を特定の値で計算し、先行ゼロは既知です。 some_constant * x – Jarann

+0

各数値以下の10のべき乗を見つけ、小さい方の2つに10の2つの累乗の除算を掛けて、大きい方を加えます。 – GurV

答えて

0

1)一方/ 10ループ

2)取得に差

3)乗算最小数によってを使用して、両方の数値の桁数を計算します10 ^違い

4)あなたは、このためのmath.hをインクルードする必要があります一緒に

+0

これをいくつかのコードでチェックしたところ、 – Jarann

0

それらを追加します。 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); 
} 
関連する問題