2016-12-11 19 views
0

我正在尋找一種方式(最好是遞歸)來添加兩個整數與他們的MSB對齊。MSB對齊加法

例如:125 + 25 = 375

我試圖扭轉位有效對準他們,但賬面是完全錯誤的。即。 526(625)+ 05(50)= 531。

+0

作爲一個初始問題,你打算如何表示'0600'(完成前導零)? –

+0

@IgorTandetnik在我的代碼中,我用一定的數值​​計算了這些數字,並且知道了前導零。 some_constant * x – Jarann

+0

找到小於或等於每個數字的10的冪,用十的兩個冪的除數乘以較小的一個,然後與較大的一個相加。 – GurV

回答

0

1)使用,而/ 10循環

2)獲取的差

3)乘以最小數目由計算的這兩個數字的位數10 ^區別

4)將它們加在一起

+0

我剛剛檢查了一些代碼,這個工作很完美,謝謝 – Jarann

0

您需要爲此包含math.h。假設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); 
}