令和4年度 問78 チェックデジットを求めるプログラム

問題

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

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

〔プログラム〕

チェックデジットを求める関数checkDigitの未完成プログラム
コードをテキストで確認

枠で示されたaは未記入の処理。

○整数型: 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

先に解説を見る
正解イ

j ← k+(j-10×k)

解説

この問題のポイント

2桁の整数は、10で割った整数商が十の位、余りが一の位です。余りは「元の数-10×整数商」でも求められます。桁ごとの数字を合計する処理では、この二つを足します。

空欄に当てはめると

j÷10の整数部分kが十の位です。

10×kを引いたj-10×kが一の位になります。

したがって、桁の和はk+(j-10×k)です。

例えば47なら4+(47-40)=11となり、次の回で1+1=2になります。

正解:イ

j ← k +(j - 10 × k)です。

同じ分野の問題

関連する用語

編集・確認:kakoloop · 編集方針

公開日:

内容更新:

問題・解説の誤りを報告する

画像を拡大表示