2012-09-23 79 views
14

假設我需要格式化數組的輸出以顯示每行固定數量的元素。我怎麼去做這個使用模數運算?模運算符是如何工作的?

使用C++,下面的代碼每行顯示6個元素,但我不知道它是如何工作的?

for (count = 0 ; count < size ; count++) 
{ 
    cout << somearray[count]; 
    if(count % 6 == 5) cout << endl; 
} 

如果我想每行顯示5個元素,該怎麼辦?我如何找到所需的確切表達式?

回答

1

它給你一個部門的其餘部分。

int c=11, d=5; 
cout << (c/d) * d + c % d; // gives you the value of c 
1

您可以將模運算符想象爲給你一個餘數。計數%6將盡可能多次除盡6次,並給出0到5之間的餘數(這些都是可能的餘數,因爲您已經儘可能多地分出了6次)。數組的元素全部打印在for循環中,但每次剩餘爲5(每6個元素)時,它會輸出一個換行符。這給你每行6個元素。對於每行5個元素,使用

如果(計數%5 == 4)

23
在用b的一個部門的C++表達 a % b返回剩餘

(如果它們都是正的。對於負數符號的結果是實現定義的)。例如:

5 % 2 = 1 
13 % 5 = 3 

有了這些知識,我們可以嘗試瞭解您的代碼。條件count % 6 == 5意味着當6的餘數除以5時將寫入換行符。這種情況發生的頻率如何?從第6行開始(count = 5),相隔6行(練習:寫入數字1..30並強調滿足此條件的數字)。

爲了從你的代碼中獲得所需的行爲,你應該改變條件爲count % 5 == 4,從第5行開始(計數= 4),每5行會給你換行。

+3

「對於負數sig n的結果是實現定義的「這在C++ 11中是不正確的 - 參見ISO14882:2011(e)5.6-4或https://stackoverflow.com/questions/7594508。 –

1

基本上模運算給你剩下 簡單的例子,在數學方面有什麼遺留/ 11餘除以3?答案是2

對於同樣的事C++有模運算符( '%')

用於解釋

#include <iostream> 
using namespace std; 


int main() 
{ 
    int num = 11; 
    cout << "remainder is " << (num % 3) << endl; 

    return 0; 
} 

基本代碼將顯示

餘數爲2

相關問題