2012-10-16 25 views
-5

我遇到了一個問題,如果我可以統治數學,那麼這個問題很容易解決。所以如果有人能指出我正確的方向,我會很高興欣賞這一貢獻。Math和C++:我如何編寫一個函數,每隔16次添加一個數字?

在配方中,我想添加一個X數字,例如每16個杯子的檸檬數量。所以當我有5杯時,我只會用1個檸檬。當我有17杯時,我會用2個檸檬。當我有32杯時,我會再添加一個第三個檸檬,並且像這樣每16的倍數。

什麼可能是最簡單的方法來解決這個問題?

回答

8

你不需要主宰數學此:

int lemons = cups/16 + 1; //the +1 there because apparently you want to start 
          //with one cup 
0

有檸檬和杯子之間有直接的關係,所以你可以說:

lemons = (cups/16) + 1; 

,或者如果你喜歡的話,也可以說:

lemons = (cups >> 4) + 1; 

可以更快的略早,並因爲(一)16顯然,精確的動力只能2和(b)如果檸檬和杯子是整數。通過它的聲音,你不太可能需要這種優化,而前者是足夠的,可能更清晰。

+5

不要做位移事情。它的可讀性要低得多,任何像樣的編譯器都會生成相同的代碼。 – interjay

+0

@interjay我同意可讀性。不太確定編譯器會生成相同的代碼。也許如果優化,但g ++ 4.7肯定不會生成相同的代碼未優化。 –

+0

如果你關心的速度足以做出這樣的微觀優化,你顯然會進行優化編譯。我不明白編譯如何非優化。 – interjay

相關問題