HOME»基本情報技術者平成23年特別問題»午後問9
基本情報技術者過去問題 平成23年特別 午後問9
⇄問題文と設問を画面2分割で開く⇱問題PDF問9 ソフトウェア開発(C)
次のCプログラムの説明及びプログラムを読んで,設問1,2に答えよ。
〔プログラム1の説明〕
U劇場の座席予約システムにおいて,希望する座席種別と座席数を指定すると,連続した空き(未予約)座席があるかどうかを調べるプログラムである。
〔プログラム1の説明〕
U劇場の座席予約システムにおいて,希望する座席種別と座席数を指定すると,連続した空き(未予約)座席があるかどうかを調べるプログラムである。
- U劇場の座席配置は図1に示すとおりである。
- U劇場には,ステージ側から列名がA~Zの26列の座席があり,各列の座席数は異なる。
- 各列の座席は,ステージに向かって一番左から順に1,2,…と数え,列名のA~Zと,この数(以下,番という)を組み合わせた座席番号で識別される。例えば,"L列6番"の座席とは,12列目(L列)のステージに向かって一番左から6番目の座席を示す。
- 各座席には,料金の違いを示す種別(以下,座席種別という)が割り振られている。座席種別は,料金が高いものから順にS,A,B,Cの四つがある。図1中の座席の文字は座席種別を表している。
- 空き座席を探すときには,ステージに向かって最前列の一番左(A列1番)から開始して,同一の列に希望する座席種別と座席数の連続した空きがあるかどうかを調べる。A列で見つからなかった場合は,順次B列,C列,… と後列を対象にして同様に調べる。
- 関数 check_seats の引数は次のとおりである。ここで,引数の値に誤りはないものとする。
- class
- 希望の座席種別
- num
- 希望の座席数
- hall
- 座席表
- pos
- 確認結果(POSITION型の構造体へのポインタ)
- 連続した空き座席が見つかった場合,最初に見つかった空きの中で,ステージに向かって一番左に位置する座席の座席番号を pos が指す構造体に格納する。
- 連続した空き座席が見つからなかった場合,posが指す構造体の座席の列名にナル文字を格納する。
- 構造体SEATの構造は次のとおりである。
- 構造体POSITIONの構造は次のとおりである。
- 座席表hallの要素 hall[i][j] はSEAT型の構造体であり,各座席の座席種別と予約状態が次のとおり格納されている。ここで,添字iの0~25が列名A~Zに,添字jの0~Ni-1が番1~Ni(Ni は,添字iに対応する列の座席数)に対応している。
- hall[i][j].seat_class:
- 座席種別を表す "S","A","B","C"のいずれかの文字が格納されている。
- hall[i][j].reserved:
- 予約状態が格納されている。0は空きを,1は予約済を表す。
設問1
プログラム1中の に入れる正しい答えを,解答群の中から選べ。
a,b に関する解答群
- cnt = 0
- cnt--
- cnt++
- found = 0
- found = 1
c,d に関する解答群
- no
- no - num
- no - num + 1
- no - num + 2
- row
- row + 1
- row_s[row]
- row_s[row + 1]
解答選択欄
- a:
- b:
- c:
- d:
解答
- a=オ
- b=ア
- c=キ
- d=エ
解説
この設問の解説はまだありません。
設問2
関数 check_seats を使って,希望する座席種別の連続した空き座席があるかどうかを調べ,その結果を出力する。希望する座席種別の連続した空き座席がない場合には,ほかの座席種別で希望する座席数の連続した空き座席があるかどうかを調べ,その結果を出力するプログラムを作成した。作成したプログラムに関する説明文中の に入れる正しい答えを,解答群の中から選べ。
- 関数 check_service の引数は次のとおりである。ここで,引数の値に誤りはないものとする。
- class
- 希望の座席種別
- num
- 希望の座席数
- hall
- 座席表
- opt
- 結果の出力順
- 関数 check_service で使用している関数 print_seats の仕様は次のとおりである。
void print_seats(char class, int num, POSITION *pos)- 機能:
- 指定の座席種別の連続した空き座席があるかどうかの確認結果を出力する。
- 引数:
- class 座席種別
num 座席数
pos 確認結果(POSITION型の構造体へのポインタ)
- 希望する座席種別の連続した空き座席があるかどうかを調べ,その結果を出力する。
- 希望する座席種別の連続した空き座席がない場合には,希望する座席種別eに対して,結果の出力順 opt が0の場合は座席種別の料金がfものから順に,結果の出力順 opt が0以外の場合は座席種別の料金がgものから順に希望する座席数の連続した空きがあるかどうかを調べ,その結果を順次出力する。
e に関する解答群
- よりも料金の高いすべての座席種別
- よりも料金の安いすべての座席種別
- よりも一つ料金の高い座席種別
- よりも一つ料金の安い座席種別
- を除くすべての座席種別
f に関する解答群
- 高い
- 安い
g に関する解答群
- 高い
- 安い
解答選択欄
- e:
- f:
- g:
解答
- e=オ
- f=ア
- g=イ
解説
この設問の解説はまだありません。