投稿する

H29秋午後問8 [1425]

 レディGALAXYさん(No.1) 
(1) 検査文字の生成
文字列の末尾の文字を1番目の文字とし,文字列の先頭に向かって奇数番目の文字に割り当てた数値を2倍してNで割り,商と余りの和を求め,全て足し合わせる。


に関して、福嶋先生の動画見てもわからなかったので質問しました。

うまく説明できるかわからないですが、よろしくお願いします。


"奇数番目の文字に割り当てた数値を2倍してNで割り"
と書かれているところに関して


例題のipa??に割り当てられた、奇数番目のiが12×2で24、aが4×2で8になって、Nが30なので、それぞれを30で割るのですが、


福嶋先生の解説で、2倍してNで割りというのが30だから、30で割って商と余りを求め、24と8の場合は商が0で余りが24と8だよね。と言われていたのが意味が分からず混乱してしまいました。

何故それぞれ30で割って商が0で余りが24と8になるのでしょうか?

解説動画見たら全くわからなくなりました。
2018.09.29 21:45
阿南市長さん(No.2) 
動画とやらを見てないので問題そのものに関しては書きません。代わりに整数型と実数型のプログラミングにおける除算の違いを説明したいと思います。

整数型における除算(割り算)は、基本的に小数点以下の数字は切り捨てられます。割り切れようが余りが出ようが(小数点以下があろうが)、すべて取り除かれます。
割り算の答え  24÷30 = 0  割られる数が割る数より小さいため割ることができないので24がそのまま余ります。(が、演算子[/]では切り捨てられます。)
そして、余剰(あまり)を求める演算子として % が用意されています。これを用いて計算すると
24 % 30 = 24 という結果となります。
8を30で割っても同じように8を30では割れないため 商(答え) = 0、余剰(あまり) = 8 となります。

実数型では小数点以下も、可能な限り保持しようとするので、基本的には除算の演算子である[/]のみしか使えません(自作関数などで余剰計算を導入することはおそらく可能)。
ただし、厳密には10進数ではなく16進数で計算するため、細かいレベルでは若干の差異が発生することがあります。

設問では整数型の変数のみが使われていて必要な要素が余剰になるので、整数型の余剰の計算の仕方が採用されています。
2018.10.01 08:45
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop