2013-10-21 68 views
0

我試圖設計一個算法來模擬乘法加法。輸入必須是,可以是零,正數或負數。算法模擬乘法加法(僞代碼)

if "a" & "b" are two numbers 
than 
if (a)(b)=ab or 2*4=8 
than a+a+a+a = ab or 2+2+2+2 =8 

我得到了一個問題來解決,我不知道它。我設計了下面的算法/僞代碼:

  1. 如果C是我們必須加入後儲存並初步C = 0
  2. 將C的地方爲「A」,並存儲在C(0 + 2 = 2)
  3. 從「b」中減去1並存儲在「b」中。 (4-1 = 3)
  4. 如果「b = 0」STOP。否則轉到第2步。

雖然此算法在b > 0工作,但如果b等於-1或零,則失敗。該算法保持運行而不停止。

如何修復我的算法,使其適用於負數?

+0

您是否嘗試過閱讀for循環,因爲如果我沒有弄錯,您要做的事情可以通過一個簡單的循環來完成 –

+0

Bro我對這個領域很陌生。 它是我在BS(cs)的第一個學期。 –

回答

3

這裏是最簡單的方法:

int x = 5; 
int y = -10; 

int mul = 0; 
if (x > 0) 
    for (int i=0; i<x; i++) 
     mul += y; 
else 
    for (int i=0; i>x; i--) 
     mul -= y; 
// mul now x*y; 
1

這裏有你兩個簡單的提示。

  1. 加入C和A,以及在與uncoditionnal轉到步驟4取代conditionnal goto語句之前檢查B = 0。

  2. 請記住2 * -4 = - (2 * 4)。因此,您可以在代碼的早期檢查b是否爲負數,如果爲負值,則將其設置爲-1,如果爲正值或爲零,則將其設置爲-1。然後將b設置爲它自己的絕對值,並讓代碼繼續,就像你寫的那樣。然後在最後一刻,將這個總和乘以那個臨時變量。那麼你有正確的答案。

我不會給你產生的僞代碼,因爲這真的是你必須做的事情;)祝你好運。

+1

感謝很多人,它真的很有幫助。 –

+0

ro如果你能幫助我一個完整的代碼,將是偉大的... 兄弟我對此一無所知....甚至基本知識 請幫助我 –