本文へスキップ

平成24年度 春期 ITパスポート試験 問99

この問題の解説と、これまでの解答の記録です。

問99
頻出度★★☆

多くの市販の書籍には,書籍を識別するための ISBN(International Standard Book Number)コードが付けられている。ISBN コードは,0~9の数字を使った13桁の記号で構成され,左側から桁を数える。最も左側の桁を1桁目とする。1桁目から12桁目までは,国記号,出版者記号及び書籍固有の記号などが含まれる。 ISBN コードの13桁目(最も右側の桁)はチェック数字と呼ばれる桁である。ISBN コードのチェック数字は,1桁目から12桁目の数字を使って,次の計算方法によって求める。ここで,図1のように1桁目から12桁目の数字を a₁~a₁₂,チェック数字を X とする。 〔チェック数字の計算方法〕 (1) a₁~a₁₂について,奇数桁には1,偶数桁には3の重みを付ける。 (2) a₁~a₁₂の各桁に,それぞれの桁に対応した重みを掛けたものの和 S を求める。   S = a₁×1+a₂×3+a₃×1+…+a₁₂×3 (3) S を10で割った余り R を求める。 (4) 10から R を引いた値をチェック数字 X とする。なお,この値が10になった場合は,チェック数字は0とする。 表計算ソフトを使ってチェック数字を求めることにした。チェック数字を求めるワークシートを,次の手順で作成するとき,a に入れる適切な式はどれか。 (1) セル B1~N1に,ISBN コードの桁数を表す数値を入力する。 (2) セル B2~M2に,ISBN コードの1~12桁を,各セルに1桁ずつ入力する。 (3) セル B3~M3に,ISBN コードの各桁に対応した重みを入力する。 (4) セル B4に,式 [ a ] を入力し,セル C4~M4に複写する。 (5) セル B5に,セル B4~M4の合計を求める式を入力する。 (6) セル B6に,セル B5の値を10で割った余りを求める式を入力する。 (7) セル N2に,チェック数字を求める式を入力する。 図2 チェック数字を求めるワークシート

ABCDEFGHIJKLMN
1桁12345678910111213
2ISBN コード978400001234
3重み131313131313
4
5和(S)72
6剰余(R)

注記 網掛けの部分は,表示していない。

出典 平成24年度 春期 ITパスポート試験 問99
解説

問 99

  • 不正解ア

    B1*B2 は行1 (桁番号) と行2 (ISBN コードの数字) を掛ける式で、掛けるべき「重み」の行3 を使っていません。複写すると C4=C2*C1=2×7=14 のように桁番号を重みとして扱うことになり、合計は 9+14+24+16+0+0+0+0+9+20+33+48 = 173 となって、図の和(S)=72 と合いません。

  • 不正解イ

    $B1*B$3 は行1 (桁番号) と行3 (重み) の積であり、肝心の ISBN コードの数字 (行2) がまったく式に入っていません。さらに $B1 は列を絶対参照で固定しているため、C4〜M4 へ複写しても常に B1 (=1) を参照し続け、合計は 1×(1+3+1+3+1+3+1+3+1+3+1+3) = 24 にしかなりません。参照する行も参照方式も誤りです。

  • ウ

    正解 正解は ウ の B2*B3 です。図2 のワークシートは、行2 に ISBN コードの各桁 (1〜12桁)、行3 にその桁に対応する重み (1,3,1,3,…) が並び、行4 で「各桁の数字 × その桁の重み」の積を求め、行5 でその合計 S を出し、行6 で S を10で割った余り R を求める、という流れになっています。したがって B4 に入れるべき式は、同じ B 列の行2 と行3 を掛ける B2*B3 です。ここは相対参照のまま ($を付けない) にしておく点が重要で、B4 を C4〜M4 へ横方向に複写すると参照列だけが1つずつ右にずれ、C4=C2*C3、D4=D2*D3、…、M4=M2*M3 と、各桁が自分の桁の重みと掛かる正しい式に自動的に変わります。検算すると 9×1+7×3+8×1+4×3+0×1+0×3+0×1+0×3+1×1+2×3+3×1+4×3 = 72 となり、図の B5 に表示された和(S)=72 と一致するので、ウ が正しいことが確認できます。

  • 不正解エ

    参照する行 (行2 と行3) 自体は正しいのですが、$B2 のように列 B を絶対参照で固定してしまっているのが誤りです。この式を C4〜M4 へ複写しても $B2 は動かず、C4=$B2*C$3=9×3=27、D4=$B2*D$3=9×1=9 … と、すべての桁で先頭桁の 9 が使われてしまいます。合計は 9×(1+3+1+3+1+3+1+3+1+3+1+3) = 216 となり、図の和(S)=72 と一致しません。横方向に複写して列をずらしたいのだから、列は絶対参照にしてはいけません。

ここがポイント
  • チェックディジット (検査数字) の一般的な計算手順: 各桁の数字に決められた重みを掛けて合計 S を求め、S を法 (この問題では10) で割った余り R からチェック数字を決める。ISBN-13 では重みが 1,3,1,3,… と交互になる。
  • 表計算ソフトの相対参照と絶対参照の使い分け: $を付けない相対参照は複写した方向・距離だけ参照位置がずれ、$を付けた部分 ($B なら列、B$3 なら行) は固定される。横方向に複写して列を1つずつずらしたい式では、列に$を付けてはいけない。
用語

解答の記録