行ごとに固定数の要素を表示するには、配列の出力をフォーマットする必要があるとしましょう。モジュラス演算を使用してこれを行うにはどうすればよいですか?
C++を使用すると、以下のコードは1行に6つの要素を表示するために機能しますが、どのように、そしてなぜ機能するのかわかりません。
for ( count = 0 ; count < size ; count++)
{
cout << somearray[count];
if( count % 6 == 5) cout << endl;
}
1行に5つの要素を表示するにはどうすればよいですか?必要な正確な表現を見つけるにはどうすればよいですか?
c ++の式a % b
は、aのbによる除算の剰余を返します(正の場合。負の数の場合、結果の符号は実装定義です)。例えば:
5 % 2 = 1
13 % 5 = 3
この知識があれば、コードを理解しようとすることができます。条件count % 6 == 5
は、6による除算カウントの残りが5のときに改行が書き込まれることを意味します。どのくらいの頻度で発生しますか? 6行目(カウント= 5)から始まる、正確に6行離れています(練習:番号1..30を書き、この条件を満たすものに下線を引きます)。
コードから目的の動作を得るには、条件をcount % 5 == 4
に変更する必要があります。これは、5行目(カウント= 4)から5行ごとに改行します。
基本的にモジュラス演算子は、11を3で割ったときの余り/残りを数学の簡単な例で示しますか?答えは2です
同じことのために、C++にはモジュラス演算子( '%')があります
説明用の基本コード
#include <iostream>
using namespace std;
int main()
{
int num = 11;
cout << "remainder is " << (num % 3) << endl;
return 0;
}
表示するもの
残りは2
このJSFiddleプロジェクトは、モジュラスの仕組みを理解するのに役立ちます。 http://jsfiddle.net/elazar170/7hhnagrj
function modulus(x,y){
var m = Math.floor(x / y);
var r = m * y;
return x - r;
}
分割の残りを提供します。
int c=11, d=5;
cout << (c/d) * d + c % d; // gives you the value of c
モジュラス演算子は剰余を与えると考えることができます。 count%6は、可能な限り6をcountから除算し、0〜5の剰余を与えます(すでに6をできるだけ多く除算しているため、これらはすべての可能な剰余です)。配列の要素はすべてforループで出力されますが、残りが5(6番目の要素ごと)になるたびに、改行文字が出力されます。これにより、1行に6つの要素が与えられます。行ごとに5つの要素を使用するには、
if(カウント%5 == 4)