どこよりも遅い!情報関連基礎第3問 解説
最終更新日2010年4月6日
第3問は正の整数値(算用数字)を漢数字に直す手順(プログラム)を考える問題。問1
一万未満の数を漢数字表示するとき、千の位から順に一桁ごとに処理を行う。
5023 → 「五千」「二十」「三」
と百の位の 0 は何も表示されない。よって数字が 0 の桁では何も表示しない(解答群の0.)
1211 → 「千」「二百」「十」「一」
の表示のように、数字の 1 の桁には一の位では「一」を表示する。それ以外の位ならば、その桁の位を表す文字のみを漢字で表示し(解答群の5.)「一」は表示しない。
2345 → 「ニ千」「三百」「四十」「五」
の各桁のように、数字が 2 以上の場合、一の位ならば、その桁の数字のみを漢字で表示する(解答群の3.)それ以外の位ならば、その桁の数字と位を表す文字を漢字で表示する(解答群の4.)
問2.
以上の表示に基づいて、漢数字表示の手続きを考える。まず二つの配列 Suji, KuraiMoji を以下で定める。
(01) Suji[1] ← 「」, Suji[2] ← 「ニ」,Suji[3] ← 「三」 (02) Suji[4] ← 「四」, Suji[5] ← 「五」,Suji[6] ← 「六」 (03) Suji[7] ← 「七」, Suji[8] ← 「八」,Suji[9] ← 「九」 (04) KuraiMoji[4] ← 「千」,KuraiMoji[3] ← 「百」 (05) KuraiMoji[2] ← 「十」,KuraiMoji[1] ← 「」 |
(01) kurai ← 1000 (02) keta を 4 から 1 まで 1 ずつ減らしながら | ( d は各位の数字を表す) (03) | d ← n ÷ kurai (04) | もし d ≠ 0 ならば | | ( d が 0 でないときの操作。まず一の位が 1 のときの操作) (05) | | もし d = 1 かつ keta = 1 ならば(解答群の3.) (06) | | | 「一」を表示する(解答群の0.) (07) | | を実行し、そうでなければ | | (「一の位が 1 のとき」以外の操作。数字を表す漢字を表示) (08) | | | Suji[d] を表示する(解答群の1.) | | (次にその桁の位を表す漢字を表示) (09) | | | KuraiMoji[keta] を表示する(解答群の5.) (10) | | を実行する (11) | を実行する | ( n の頭の位をはらう操作) (12) | n ← n % kurai(順に解答群の3.5.) | ( 新しくできた数字の頭の位を表すための準備) (13) | kurai ← kurai ÷ 10 (14) を繰り返す |
123456789 → 「一」「億」「二千三百四十五」「万」「六千七百八十九」
と四桁ごとに漢数字表記をして「億」「万」と大きな位を表す文字が挿入される。
このことから以下の手続きで漢数字表記ができる。
(01) | 文字配列(Suji, KuraiMoji)を初期化する手続き。 (05) (06) OkinaKuraiMoji[3] ← 「億」 (07) OkinaKuraiMoji[2] ← 「万」 (08) OkinaKuraiMoji[1] ← 「」 (09) okinaKurai ← 100000000(一億.解答群の5.) (10) kugiri を 3 から 1 まで 1 ずつ減らしながら | ( n は四桁ごとの一万未満の数字を表す) (11) | n ← x ÷ okinaKurai(解答群の2.) (12) | もし n ≠ 0 ならば (13) | | | | | (一万未満の数 n を漢字表示する手続き) (26) | | (27) | | OkinaKuraiMoji[kugiri] を表示する (28) | を実行する | ( x の頭の四桁の数字をはらう操作) (29) | x ← x % okinaKurai(解答群の0.) | ( 新しくできた数字の頭の四桁を表すための準備) (30) | okinaKurai ← okinaKurai ÷ 10000(解答群のa.) (31) を繰り返す |
もし n=1000 かつ kugiri ≠ 1 ならば | 「一」を表示する を実行する |
数学とクイズでくつろいで<数学の部屋<どこよりも遅い!センター試験数学 解説<情報関連基礎第3問 解説