数学とクイズでくつろいで数学の部屋どこよりも遅い!センター試験数学 解説情報関連基礎第3問 解説

どこよりも遅い!情報関連基礎第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] ← 「」

 以下の手続きの中で a÷b は a を b で割った商の整数部分、a%b は a を b で割った余りを表す。

(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) を繰り返す

問3.問2の手続きをもとに一万より大きい数の漢数字表記の手続きを考える。

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) を繰り返す

 この手続きでは 10,000,000 は「千万」と表示する。これを「一千万」と表示するには、以下の手続きを上の手続きの中に挿入すればよい。 

もし n=1000 かつ kugiri ≠ 1 ならば
 | 「一」を表示する
を実行する

この手続きは n が定まり、「千万」を表示する前になるため、上の手続きの (12) 行目 (解答群の0.)の直後に挿入すればよい。


数学とクイズでくつろいで数学の部屋どこよりも遅い!センター試験数学 解説情報関連基礎第3問 解説