• 電気通信大学、プログラミング教室、小中高生、大人、コンピュータ科学

▼令和4年度:問78 関数 checkDigit は、10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit を引数として、次の手順で計算したチェックデジットを戻り値とする。プログラムの中の a に入れる字句として、適切なものはどれか。ここで、配列の要素番号は1から始まる。

〔手順〕
(1)配列 originalDigit の要素番号1~9の要素の値を合計する。
(2)合計した値が 9 より大きい場合は、合計した値を 10進の整数で表現したときの各桁の数字を合計する。この操作を、合計した値が 9 以下になるまで繰り返す。
(3)(2)で得られた値をチェックデジットとする。

〔プログラム〕
〇整数型:checkDigit (整数型の配列:originalDigit)
 整数型:i, j, k
 j ← 0
 for(i を 1 からoriginalDigitの要素数 まで 1 ずつ増やす)
j ← j + originalDigit [ i ]
 endfor
 while (j が 9 より大きい)
k ← j ÷ 10 の商 /* 10進9桁の数の場合、j が2桁を超えることはない */
< a >
 endwhile
 return j

ア j ← j – 10 × k

イ j ← k + ( j – 10 × k )

ウ j ← k + ( j – 10 ) × k

エ j ← k + j

▼上に出てきた用語の意味
【チェックデジット check digit】数字列の誤りを検知するために付加される検査用の数字。(IT用語辞典 e-Words)

▼今回の問いとFEのシラバスの関連を赤の★印、既出は橙色の★印で示しました。

表の出所 FEのシラバスから筆者が作成。

▼IPのシラバスでの位置付け
大分類7:基礎理論 >中分類14:アルゴリズムとプログラミング >37. アルゴリズムとプログラミング >(4) プログラミング

▼比較:FEのシラバスでの位置付け
大分類1:基礎理論 >中分類2:アルゴリズムとプログラミング >3. プログラミング >(1)プログラミング
解答イ