2012-09-23 54 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

相关问题