資格部

資格・検定の試験情報、対策方法、問題解説などをご紹介

IP 令和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

 

  1. j ← j - 10 × k
  2. j ← k + (j - 10 × k)
  3. j ← k + (j - 10) × k
  4. j ← k + j

解答・解説

解答

 イ

解説

 「合計した値が9より大きい場合は,合計した値を10進の整数で表現したときの各桁の数字を合計する」処理が、while内の処理にあたります。

 while(jが9より大きい)

  k ← j ÷ 10の商 /*10進9桁の数の場合,jが2桁を超えることはない*/

    a  

 endwhile

 「k ← j ÷ 10の商」の部分で、jの10の位の数字をkに代入しているので、  a  には、jの1の位を求め、それとkの和をjに代入する処理が入ります。

 jの1の位は、j - 10 × k で表されるので、  a  に入る式は、
  j ← k + (j - 10 × k)
になります。

参考情報

分野・分類
分野 テクノロジ系
大分類 基礎理論
中分類 アルゴリズムとプログラミング
小分類 アルゴリズムとプログラミング
テキスト

前問 一覧 次問