戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2012年 春期 午後 問05


受験者数の集計リスト作成に関する次の記述を読んで、設問1〜3に答えよ。

 C大学では、今年度と前年度の受験者データを用いて、出身校ごとの受験者数を集計した出身校別受験者数リスト(以下、出身校リストという)を作成する。   〔受験者データ及び出身校リストの説明〕 (1) 今年度と前年度の受験者データは、それぞれ今年度受験者ファイルと前年度受験者ファイルの二つの順ファイルに保存されている。これらのレコード様式を図1に示す。
基本情報技術者試験(平成24年 午後 問5 図1)
(2) 今年度受験者ファイル及び前年度受験者ファイルのレコードは、どちらも学校コードの昇順に並んでいる。 (3) 図2に示す例のように、出身校リストの印字項目は、順位、学校名、今年度受験者数、前年度受験者数である。印字の順序は、今年度受験者数の降順とし、今年度受験者数が同数の場合は、前年度受験者数の降順、それも同数の場合は、学校コードの昇順とする。  順位は、今年度受験者数の多い方から1、2、3、…と採番した番号である。今年度受験者数が同じ場合は同順位とし、次の順位は、同順位の学校数分だけ加算した順位とする。  学校名は、学校名ファイルから得る。学校名ファイルのレコード様式を図3に示す。
基本情報技術者試験(平成24年 午後 問5 図2)
基本情報技術者試験(平成24年 午後 問5 図3)
(4) 図2に示す例のように、出身校リストには、1位から指定した順位(以下、指定順位という)までを印字し、指定順位よりも下位の学校の受験者数は、それらを合計して“その他計”として印字する。   〔出身校リスト作成処理の説明〕  図4に、出身校リスト作成処理の流れと各ファイルのレコード様式を示す。 (1) 集計処理では、今年度受験者ファイルと前年度受験者ファイルから、それぞれ学校ごとに受験者数を集計したファイル1及びファイル2を作成する。 (2) 突合せ処理では、学校コードをキーとして、ファイル1とファイル2の突合せを行い、ファイル3を作成する。この突合せ処理の中では、整列は行わない。 (3) 整列処理では、ファイル3を整列し、ファイル4を作成する。 (4) 順位付け処理では、ファイル4の各レコードの順位付けを行い、ファイル5を作成する。 (5) リスト作成処理では、ファイル5から、出身校リストを作成する。学校ごとの明細行の印字は、ファイル5の1レコードの内容から1行ずつ、指定順位まで印字する。このとき、学校名は、学校コードをキーにして学校名ファイルから読み込む。指定順位よりも下のレコードは、それらの受験者数を合計して“その他計”として印字する。

設問1:

問題文を見る
 表1は、図4中の突合せ処理における条件に合致するレコードの有無と出力レコードの各項目の内容である。表1中のに入れる正しい答えを、解答群の中から選べ。
基本情報技術者試験(平成24年 午後 問5 表1)
a, bに関する解答群 基本情報技術者試験(平成24年 午後 問5 設問1 a, bに関する解答群)

模範解答

a:エ、b:カ

解説

解答の導き方

まず、ファイル1とファイル2が何を表すかを確認します。図4では、今年度の受験者データを学校ごとに集計してファイル1を作り、前年度の受験者データを学校ごとに集計してファイル2を作ります。つまり、ファイル1は今年度、ファイル2は前年度の受験者数です。
突合せ処理は、学校コードをキー(データを対応づける項目)として、同じ学校のレコード(ファイルに記録された1件分のデータ)を照らし合わせる処理です。問題文には、突合せを行ってファイル3を作るとあります。ファイル3には、学校コード、今年度受験者数、前年度受験者数を入れます。
各場合の出力内容は、次のように考えます。
ファイル1ファイル2出力する学校コード今年度受験者数前年度受験者数
ありあり共通の学校コードファイル1の受験者数ファイル2の受験者数
ありなしファイル1の学校コードファイル1の受験者数0
なしありファイル2の学校コード0ファイル2の受験者数
ファイル1にはあるがファイル2にはない場合、その学校には今年度の受験者がいますが、前年度の受験者はいません。したがって、今年度受験者数にはファイル1の値を入れ、前年度受験者数には0を入れます。表1のaはこの2項目を問うているので、該当するのはエです。
反対に、ファイル1にはなくファイル2にはある場合、学校コードはファイル2から取り出します。今年度の受験者はいないため、今年度受験者数は0です。前年度受験者数には、ファイル2にある受験者数を入れます。表1のbが問うのは「学校コード」と「今年度受験者数」なので、ファイル2の学校コードと0の組合せであるカが該当します。

誤りやすいポイント

  • ファイル1は今年度、ファイル2は前年度です。ファイル番号と年度を逆にしないようにします。
  • レコードがない学校を、出力対象から外すわけではありません。片方の年度に受験者がいれば、その学校のレコードを出力し、受験者がいない年度の人数を0にします。
  • bでは、表の対象欄が「学校コード」と「今年度受験者数」です。前年度受験者数ではなく、ファイル2の学校コードと今年度の0を選びます。
  • 0にするのは受験者数です。学校コードは数値であっても識別用の項目なので、0に置き換えません。

FAQ

Q: 片方のファイルに学校のレコードがないとき、受験者数を空欄にしないのはなぜですか?
A: ファイル3には両年度の受験者数を記録します。レコードがない年度は、その学校の受験者がいないことを表すため、人数を0にします。
Q: ファイル1とファイル2の両方にレコードがある場合、学校コードはどちらから取りますか?
A: 学校コードをキーにして対応づけるため、両方のレコードで学校コードは同じです。どちらのファイルから取っても同じ値になります。

関連キーワード: 順ファイル、レコード、キー、集計、突合せ処理

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 図4中の整列処理に最低限必要な整列キー項目及び整列順(昇順又は降順)の組の並びとして正しい答えを、解答群の中から選べ。ここで、キー項目及び整列順の組は、([整列キー項目];[整列順])で表す。また、コンマで区切られた組の並びは、左の方が整列の優先度が高いことを表す。   解答群  ア:(学校コード;昇順)、(今年度受験者数;昇順)、(前年度受験者数;昇順)  イ:(学校コード;昇順)、(前年度受験者数;降順)、(今年度受験者数;降順)  ウ:(今年度受験者数;降順)、(前年度受験者数;降順)、(学校コード;降順)  エ:(今年度受験者数;降順)、(前年度受験者数;降順)、(学校コード;昇順)  オ:(今年度受験者数;降順)、(前年度受験者数;降順)  カ:(今年度受験者数;昇順)、(学校コード;昇順)

模範解答

エ

解説

解答の導き方

この設問では、ファイル3をファイル4に整列するとき、どの項目をどの順番で使えば出身校リストの印字順になるかを考えます。整列キーとは、レコードの並び順を決めるために使う項目です。複数のキーを使う場合は、先に指定したキーほど優先度が高くなります。
まず、問題文には、印字順について「今年度受験者数の降順」とあります。降順は、大きい値から小さい値へ並べる順序です。したがって、最初の整列キーは今年度受験者数で、順序は降順です。
次に、今年度受験者数が同じ学校どうしの順を決めます。問題文には、前年度受験者数の降順で並べるとあります。図2でも、今年度受験者数がともに80の東西高校と西北高校は、前年度受験者数が96の東西高校が、68の西北高校より先に印字されています。よって、2番目の整列キーは前年度受験者数で、順序は降順です。
さらに、今年度受験者数と前年度受験者数の両方が同じ場合は、学校コードの昇順で並べます。昇順は、小さい値から大きい値へ並べる順序です。この条件も印字順を決めるために必要なので、学校コードを3番目の整列キーにします。
つまり、優先順位は次のとおりです。
  1. 今年度受験者数:降順
  2. 前年度受験者数:降順
  3. 学校コード:昇順
順位の決め方と、レコードの印字順は分けて考えます。順位は今年度受験者数を基準に決まり、今年度受験者数が同じ学校は同順位です。一方、同順位の学校どうしの印字順は、前年度受験者数と学校コードで決まります。
この条件をすべて満たすのは、今年度受験者数の降順、前年度受験者数の降順、学校コードの昇順の順に整列する選択肢です。

誤りやすいポイント

  • 学校コードを最初の整列キーにすると、受験者数の多い順ではなく、学校コード順が優先されてしまいます。
  • 前年度受験者数を最初のキーにすると、今年度受験者数の多い学校から印字するという条件を満たせません。
  • 前年度受験者数までで整列を終えると、両年度の受験者数が同じ学校どうしの順序が決まりません。学校コードの昇順も必要です。
  • 前年度受験者数や学校コードは、同じ今年度受験者数の学校どうしを並べるためのキーです。これらを使っても、同順位の学校の順位自体が変わるわけではありません。

FAQ

Q: 前年度受験者数が多い学校の方が、順位も上になりますか?
A: いいえ。順位は今年度受験者数で決まります。前年度受験者数は、今年度受験者数が同じ学校どうしの印字順を決めるために使います。
Q: 学校コードは印字項目にありませんが、なぜ整列に使うのですか?
A: 両年度の受験者数が同じ学校どうしの印字順を決めるためです。学校名を印字する場合でも、学校コードによる並び順の条件は守る必要があります。
Q: 「最低限必要」とは、キーを少なくするという意味ですか?
A: 印字順の条件をすべて満たす範囲で、必要なキーだけを使うという意味です。この問題では3段階の順序条件があるため、3つのキーが必要です。

関連キーワード: 整列キー、複合キー、昇順、降順、順位付け

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

 次の記述中のに入れる正しい答えを、解答群の中から選べ。   〔出身校リストへの印字項目追加の説明〕  図5に示す例のような、出身校リストに前年度順位を追加した出身校別受験者数リスト2(以下、出身校リスト2という)を作成することになり、処理の追加と変更を行うことになった。前年度に受験者がいなかった高校の前年度順位は空欄とする。  図6に出身校リスト2作成処理の流れと主なファイルのレコード様式を示す。
基本情報技術者試験(平成24年 午後 問5 図5)
基本情報技術者試験(平成24年 午後 問5 図6)   〔出身校リスト2作成処理の説明〕 (1) 図6の処理は、図4の同名の処理に、入出力のレコード様式への前年度順位の追加に対する変更を加えたものを用いる。 (2) 前年度受験者ファイルからファイル8を作成するまでの処理に用いられる処理1〜4のうち、処理2は、c処理である。また、処理4は、d処理である。 (3) 変更になる突合せ処理の出力であるファイル9及びそれを整列した出力であるファイル10のレコード項目は、eである。   c, dに関する解答群  ア:学校コードの降順への整列  イ:学校コードの昇順への整列  ウ:学校ごとの人数の集計  エ:受験者数の降順への整列  オ:受験者数の昇順への整列  カ:順位付け  キ:リスト作成   eに関する解答群  ア:学校コード、今年度受験者数、前年度受験者数  イ:学校コード、今年度受験者数、前年度順位  ウ:学校コード、今年度受験者数、前年度順位、前年度受験者数  エ:学校コード、今年度順位、今年度受験者数、前年度受験者数  オ:学校コード、今年度順位、今年度受験者数、前年度順位、前年度受験者数  カ:学校コード、今年度順位、前年度受験者数  キ:学校コード、今年度順位、前年度順位  ク:学校コード、今年度順位、前年度順位、前年度受験者数

模範解答

c:エ、d:イ、e:ウ

解説

解答の導き方

前年度の受験者データから「前年度順位」を作り、それを今年度の受験者数と組み合わせる流れを考えます。
  1. 処理2は、受験者数の多い順に並べる処理です。
    処理1では、前年度受験者ファイルから学校ごとの受験者数を集計し、ファイルXを作ります。集計後に学校ごとの順位を付けるには、受験者数が多い学校から順に並べる必要があります。
    したがって、処理2は「受験者数の降順への整列」です。降順とは、大きい値から小さい値へ並べることです。解答群では エ に当たります。
  2. 処理4は、学校コードの昇順に並べ直す処理です。
    ファイル8には「学校コード、順位、受験者数」が入ります。処理3で受験者数順の順位を付けた後、ファイル8を作ります。
    その後は、ファイル1とファイル8を学校コードで突き合わせます。問題文には「突合せ処理の中では、整列は行わない。」とあります。そのため、突合せを始める前に、ファイル1とファイル8の両方が学校コード順になっている必要があります。処理4で学校コードの昇順に並べ直すので、答えは イ です。
  3. ファイル9とファイル10には、今年度の受験者数と前年度の順位・受験者数が入ります。
    ファイル1には、学校コードと今年度受験者数があります。一方、ファイル8には、学校コード、前年度順位、前年度受験者数があります。これらを学校コードで突き合わせると、両年度の情報が一つになります。
    この段階では、今年度の順位はまだ付いていません。順位付けは、ファイル10を作った後に行われ、結果がファイル11に保存されます。よって、ファイル9とファイル10の項目は「学校コード、今年度受験者数、前年度順位、前年度受験者数」です。解答群では ウ に当たります。

誤りやすいポイント

  • 処理2を学校コード順の整列と考えること
    処理2は前年度の順位を付ける前の処理です。順位を付けるには、受験者数の多い順に並べる必要があります。学校コード順にするのは、突合せの前に行う処理4です。
  • 処理4を受験者数順の整列と考えること
    処理4の目的は順位付けではありません。ファイル1とファイル8を学校コードで突き合わせられるように、学校コードの昇順にそろえます。
  • ファイル9・ファイル10に今年度順位を含めること
    今年度順位は、ファイル10を順位付けしてファイル11を作るときに加わります。ファイル9・ファイル10に入るのは、前年度順位と前年度受験者数です。

FAQ

Q: なぜ前年度の受験者数順に並べてから、学校コード順に並べ直すのですか?
A: 前年度の順位を決めるには、受験者数の多い順に並べる必要があるためです。その後、今年度のデータと学校コードで突き合わせるため、学校コード順に並べ直します。
Q: ファイル10に今年度順位がないのはなぜですか?
A: ファイル10は順位付け処理の前のファイルだからです。ファイル10に順位を付けた結果がファイル11です。
Q: 前年度に受験者がいない高校の前年度順位はどうなりますか?
A: 問題文にあるとおり、前年度順位は空欄になります。

関連キーワード: 集計処理、整列処理、順位付け、突合せ処理、順ファイル

解説を読んでも分からないところは、AIに質問できます。 この問題の本文と解説をふまえて答えます。

この設問をAIに質問する

クイズモードで開きます(AIへの質問は無料の会員登録で使えます)

戦国ITクイズ機能

\ せっかくなら /

基本情報技術者を
クイズ形式で学習しませんか?

クイズ画面へ遷移する→

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について