36

配列の出力をフォーマットして、1 行あたりの固定数の要素を表示する必要があるとしましょう。モジュラス演算を使用してそれを行うにはどうすればよいですか?

C++ を使用すると、以下のコードは 1 行あたり 6 つの要素を表示するために機能しますが、どのように、なぜ機能するのかわかりません。

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

1 行に 5 つの要素を表示したい場合はどうすればよいですか? 必要な正確な式を見つけるにはどうすればよいですか?

4

5 に答える 5

42

C++ 式a % bでは、a を b で割った余りを返します (正の場合。負の数の場合、結果の符号は実装定義です)。例えば:

5 % 2 = 1
13 % 5 = 3

この知識があれば、あなたのコードを理解しようとすることができます。条件count % 6 == 5は、除算数6の余りが5の場合に改行することを意味します。それはどのくらいの頻度で起こりますか?ちょうど 6 行間隔で (練習: 数字 1..30 を書き、この条件を満たすものに下線を引いてください)、6 行目 (count = 5) から始めます。

コードから目的の動作を得るには、条件をcount % 5 == 4に変更する必要があります。これにより、5 行目 (カウント = 4) から 5 行ごとに改行が行われます。

于 2012-09-23T22:58:31.267 に答える
3

この JSFiddle プロジェクトは、係数がどのように機能するかを理解するのに役立ちます: http://jsfiddle.net/elazar170/7hhnagrj

モジュラス関数は次のように機能します。

     function modulus(x,y){
       var m = Math.floor(x / y);
       var r = m * y;
       return x - r;
     }
于 2016-07-18T07:55:55.693 に答える
3

割り算の余りが得られます。

int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
于 2012-09-23T22:52:54.517 に答える
2

モジュラス演算子は、剰余を与えるものと考えることができます。count % 6 は、count のうち 6 をできる限り多く除算し、0 から 5 までの剰余を返します (6 をできる限り多く除算したため、これらはすべて可能な剰余です)。配列の要素はすべて for ループで出力されますが、残りが 5 になるたびに (6 番目の要素ごとに) 改行文字が出力されます。これにより、1 行あたり 6 つの要素が得られます。1 行あたり 5 要素の場合は、次を使用します

もし (カウント % 5 == 4)

于 2012-09-23T22:56:27.447 に答える