HOME»基本情報技術者試験掲示板»平成24年秋期午後問9
投稿する
平成24年秋期午後問9 [3808]
ののさん(No.1)
https://www.fe-siken.com/kakomon/24_aki/pm09.html
f の問題ですが
pnum[m]==‘0’ や
nnum[m]==‘9’ というのはどういう意味なんでしょうか。
前後賞を探すためのプログラムですから
lots[j] から1を引いたり足したりした数値となんらかの関係があるんでしょうが
さっぱりわかりません。
f の問題ですが
pnum[m]==‘0’ や
nnum[m]==‘9’ というのはどういう意味なんでしょうか。
前後賞を探すためのプログラムですから
lots[j] から1を引いたり足したりした数値となんらかの関係があるんでしょうが
さっぱりわかりません。
2021.11.08 23:03
chihiroさん(No.2)
★FE プラチナマイスター
簡単に言うと番号の繰り上げと繰り下げです。
例えば確認するくじ番号が"321000"の場合、"321001"と"320999"の2つの数字列を生成します。
"321001"に関しては、確認するくじ番号"321000"の最下位の桁である"0"に1を加えるだけでいいです。
(文字列"0"に数値1を加えるのはおかしいと思われるかもしれませんが、文字列は文字コード、つまり数値として扱われるため問題ありません。また、"0"~"9"の文字コードは連続しているため、例えば"2"に1を加えて"3"に、"5"から2を引いて"3"に、という風に制約はありますが、文字列を数値同士の加減算と同じように操作できます。上の例でも"0"に1を加えると"1"となります)
ですが"320999"の場合、単に最下位の桁から1を引いても目的の数字列は得られません。("0"から1を引いても"9"にはなりません)
よって最下位の桁が"0"の場合は例外として、"0"を"9"に置き換えて、その1つ上の桁から1を引く処理をします。1つ上の桁も"0"であった場合は、同様に"9"に置き換えて、"0"が出現しなくなるか、最上位の桁を処理するまで同じ処理を繰り返します。
なお、確認するくじ番号が"000000"の場合は最後までこの処理が行われるため"999999"になります。
これらの処理がpnumについて行われます。
nnumについても考え方は同じです。(こっちは繰り上げの処理で、"9"を"0"に置き換えます)
例えば確認するくじ番号が"321000"の場合、"321001"と"320999"の2つの数字列を生成します。
"321001"に関しては、確認するくじ番号"321000"の最下位の桁である"0"に1を加えるだけでいいです。
(文字列"0"に数値1を加えるのはおかしいと思われるかもしれませんが、文字列は文字コード、つまり数値として扱われるため問題ありません。また、"0"~"9"の文字コードは連続しているため、例えば"2"に1を加えて"3"に、"5"から2を引いて"3"に、という風に制約はありますが、文字列を数値同士の加減算と同じように操作できます。上の例でも"0"に1を加えると"1"となります)
ですが"320999"の場合、単に最下位の桁から1を引いても目的の数字列は得られません。("0"から1を引いても"9"にはなりません)
よって最下位の桁が"0"の場合は例外として、"0"を"9"に置き換えて、その1つ上の桁から1を引く処理をします。1つ上の桁も"0"であった場合は、同様に"9"に置き換えて、"0"が出現しなくなるか、最上位の桁を処理するまで同じ処理を繰り返します。
なお、確認するくじ番号が"000000"の場合は最後までこの処理が行われるため"999999"になります。
これらの処理がpnumについて行われます。
nnumについても考え方は同じです。(こっちは繰り上げの処理で、"9"を"0"に置き換えます)
2021.11.09 10:03