やじゅ@アプリケーション・ラボ わんくま支局

目次

Blog 利用状況

ニュース

プロフィール

MSMVP

余りが使えるということは意外と知られていない

「余りとは何よ」と聞く人もいないと思うが、一応説明すると
ある数を割った時の残りである。例えば、10個のりんごがあった
として3人に同じ数だけ分けるとすると、1つ残る、この1つが
余りである。

これを、算数で表わすと10 ÷ 3 = 3 ・・・ 1

この余りをプログラム言語で求める場合、Basic言語なら
「Mod」、C言語なら「%」を使用する。

例 a = 10 Mod 3 a = 1 となる。(Basic)
 a = 10 % 3; a = 1 となる。( C )

では、この余りはいったいどのような時に使えるのでしょう。

 仕事として、よくあるのは帳票のプログラムで、例えば5明細ごと
に実線を引く、または交互に色を分けるといった使い方でしょうか

 明細の場合 カウント値 Mod 5 → (0,1,2,3,4)
 交互の場合 カウント値 Mod 2 → (0,1)

つまり、余りとは、~ごとに処理を行いたい時に使えるのである。

もう少しふみこんだ例としては、トランプゲームがあります。
トランプカードは、4つの種類がそれぞれ13枚、計52枚あります。
この52枚を、スペード、ハート、クローバ、ダイヤの順に0~51と
連番にしてプログラム上で管理したとします。
スペード 0 ~ 12
ハート 13 ~ 25
クローバ 26 ~ 38
ダイヤ 39 ~ 51

こうしたとき余りを使うと、0~12までの値のみを求めることが
できるようになります。例えば、15ならハートの2というように。
プログラム変数
Card 0~51
Mark 0~3(スペード:0、ハート:1、クローバ:2、ダイヤ:3)
Tranp 0~12

Mark = Card / 13 (13で割る、マーク番号が求まる)
Tranp = Card Mod 13 (13で剰余、トランプ番号が求まる)

0~51の連番とすることで、プログラム上の管理が簡単になり効率
も上がるわけですね。なお、ジョーカーは52にすればいいでしょう。

投稿日時 : 2007年9月7日 2:42

コメントを追加

# re: 余りが使えるということは意外と知られていない 2007/09/07 9:33 凪瀬

偶数奇数の判定に使ったり、100件ごとに改ページしたり、みたいなケースでよく利用されますね。

# re: 余りが使えるということは意外と知られていない 2007/09/07 9:35 裏口

このネタにはチェックデジットの話題が欲しかったと考える私は古すぎか?
# モジュラス11なんか普通に使ってたけど(遠い目

# re: 余りが使えるということは意外と知られていない 2007/09/07 10:16 R・田中一郎

昔は、よく、曜日を算出するときに使いましたね。

# re: 余りが使えるということは意外と知られていない 2007/09/07 10:59 ちゃっぴ

MOD といえば RSA

# re: 余りが使えるということは意外と知られていない 2007/09/07 11:50 Chuki

ページめくりの時など、普通に使ってるので、むしろ剰余演算子を知らないということにびっくりでした^^;

基本情報処理試験なんかでは、単に結果を求めさせるとか、ハッシュに関する問題とかしか出てなかったような気もする。
#こうやってみると、確かに自分とは関係ない世界の演算子に思えちゃってるのかもしれませんね。

ぜひASP.NETでページごとにDB読み込み&行を特定するなんてものを作らせてみてやってください。ありがたみがわかるかと^^;

# re: 余りが使えるということは意外と知られていない 2007/09/07 11:58 凪瀬

モジュラス11ッ!
なつかしい!

# re: 余りが使えるということは意外と知られていない 2007/09/07 15:50 裏口

>なつかしい!

??年齢詐称疑惑浮上

# re: 余りが使えるということは意外と知られていない 2007/09/08 0:19 やまだ

んー、でも、この例だと、多次元配列の代わりに使えるよ、ということを示しているだけなのでは?

だからって、「余りが使えない」ということではないです。どうせ多次元配列も内部的には剰余を利用して要素のアクセスしているんだろうと思うし。

どっちかというと「余りが使われていることは意外と知られていない」という方が私の感覚的には近いですね。

# re: 余りが使えるということは意外と知られていない 2007/09/08 10:21 やじゅ

最近はある明細件数でのページめくりも
ActiveReportなどでは、自動的に行わ
れるので、余りを使わなかったりしますね。



# My brother suggested I might like this blog. He was totally right. This post actually made my day. You cann't imagine simply how much time I had spent for this information! Thanks! 2021/12/24 20:35 My brother suggested I might like this blog. He wa

My brother suggested I might like this blog. He was totally right.
This post actually made my day. You cann't imagine simply how much time I had spent for
this information! Thanks!

# I take pleasure in, result in I found just what I used to be having a look for. You've ended my 4 day long hunt! God Bless you man. Have a great day. Bye 2022/01/06 5:42 I take pleasure in, result in I found just what I

I take pleasure in, result in I found just what I used to be
having a look for. You've ended my 4 day long hunt!
God Bless you man. Have a great day. Bye

タイトル
名前
URL
コメント