スゴ技

平成23年度 特別 基本情報技術者試験 【問9】(その2)

Blog: |

ブログの次男こと宮本です.

毎日暑いですね.そんな中,夏の基本情報セミナーが始まりました.今年は校舎の工事があり,本館での開催となります.5階まで上がるとさすがに汗が出ますね.また,特別試験の団体受験結果も届いているようです.受けた人は要チェックですね.

さて,その特別試験の問題解説もいよいよ終盤です.C言語の後半の解説とまいりましょう.では前回の続きから.

【設問2】 設問1は希望座席があるかどうかのチェック関数でしたが,今回は希望通りの座席がない場合,ほかの種別(クラス)の座席を提案するという関数です.現実にも,希望通りの予約が取れない場合に他の座席を提案するという場合がありますね.それをシステム化したものです.

それでは,関数 check_service() の内容を見ていきましょう.まずは設問1の check_seats() 関数を用いて希望座席があるかチェックします(ないというのが前提なのですが).次に, print_seats() 関数で結果を出力します.この関数については本体が記述されていませんが,入出力さえ分かれば十分なので,仕様通りと解釈しましょう.で,次の if 文で希望座席が見つからなかった場合,という処理に移ります.

if 文中では,まず座席種別数でループを作成します.SABCの4種類に,0~3 の番号を使います.これらの記号は class_s[] 配列に格納されていますね.ループ中では,チェックの順番をオプションで指定します.変数 opt が 0 の場合,高級な座席(SABCの順)からチェックします.それ以外(たぶん1)の場合は,逆に安価な座席(CBASの順)からチェックします.逆順の場合,指定する添字の計算式が CLSNUM – i – 1 になっていますが,これは座席種別を表す定数 CLSNUM の値が 4 ですので,配列 class_s[] の最大要素 3 に合わせるためです.要注意.みなさんは,希望座席がない場合,より高級な方を選びますでしょうか?

次の if 文では,希望座席以外なら,という判別です.希望座席がないことはすでに分かっているので,それをわざわざ調べる必要はない,ということですね.それらの座席種別に対して,opt で指定した順にチェックして表示するというのが実行文の内容です.

長くなりましたが,問題の答としては,e が「希望する座席種別を除くすべての座席種別」,f が「opt が 0 の場合には高いものから順に」,g が「opt が 0 以外の場合には安いものから順に」ということになります.これらに相当する選択肢を選んでください.

いかがでしたでしょうか.問題の難易度としてはそれほど高くはないのですが,詳細な理解に少し時間がかかるかなという気がします.ざっと軽く見ただけだと,配列の添字で勘違いを起こしてしまう可能性がありますね.恐らく C 言語を選択した人はほとんどいないでしょうが,これぐらいならできそうだと思えば,思い切って試験会場で選択するというのも一つの作戦ではないでしょうか.当日の状況によって考えるということも,頭のすみにでも入れておきましょう.

2011年(平成23年度)特別の解説

Date:

Tagタグ

Teamライターチーム紹介

神戸電子オフィシャルSNS

オープンキャンパスなどの
誰でも参加OKの楽しいイベント
やブログの最新記事などお届けします!

ページの上へ移動