平成24年春期試験午後問題 問9
問9 ソフトウェア開発(C)
次のCプログラムの説明及びプログラムを読んで,設問1,2に答えよ。
〔プログラム1の説明〕
S社では,通常勤務時間帯(8時30分~18時)中の各社員の予定を管理している。関数 allmem_free_slot は,通常勤務時間帯に会議を計画する場合に,出席して欲しい社員(以下,出席社員という)全員の予定が入っていない時間帯を調べるプログラムである。
〔プログラム1の説明〕
S社では,通常勤務時間帯(8時30分~18時)中の各社員の予定を管理している。関数 allmem_free_slot は,通常勤務時間帯に会議を計画する場合に,出席して欲しい社員(以下,出席社員という)全員の予定が入っていない時間帯を調べるプログラムである。
- S社では,各社員の予定を30分単位の時間帯ごとに図1に示すスケジュール表で管理している。
- スケジュール表は大きさ 19 の整数型配列で,各要素の添字の値は時間帯番号に対応している。
- スケジュール表の各要素には,予定が入っている場合には0以外の値が,予定が入っていない場合には0が入る。
- 会議時間は30分以上であり,開始時刻と終了時刻は時間帯の区切りと一致する。
- 関数 allmem_free_slot の引数は次のとおりである。ここで,引数の値に誤りはないものとする。
- num
- 出席社員数
- time_tbl
- 出席社員全員のスケジュール(スケジュール表へのポインタ配列)
- slot_num
- 会議時間(30分単位の時間帯数)
- free
- 会議開催の候補時間帯(SLOT型の配列)
- 構造体を使ったSLOT型の定義は次のとおりである。
- 候補時間帯 free には,出席社員全員の予定が入っていない,会議時間以上の連続する時間帯(以下,可能時間帯という)を全て格納する。最後に格納した要素の次の要素の開始時間帯番号には,-1を格納する。例えば,出席社員5名(社員A~E)の予定が図2のとおりであった場合,会議時間が1時間(slot_num=2)のとき,可能時間帯の一覧は表1になる。
- 関数 allmem_free_slot で使用している関数 search_free_slot の仕様は次のとおりである。
- 機能:
- スケジュール表から,予定が入っていない,時間帯数以上の連続した時間帯を全て探し出し,空の時間帯に格納する。最後に格納した空き時間帯の要素の次の要素の開始時間帯番号には,-1を格納する。
- 引数:
- sch スケジュール表
slot_num 時間帯数
free 空き時間帯(SLOT型の配列)
広告
設問1
プログラム1中の に入れる正しい答えを,解答群の中から選べ。
a に関する解答群
- 0
- 1
- time_tbl[0][0]
- time_tbl[0][i]
b に関する解答群
- i
- i - cnt
- i - cnt + 1
- i - cnt - 1
- NUM_DAY - cnt
c に関する解答群
- cnt = 0
- cnt++
- cnt--
- free_num = 0
- free_num++
- free_num--
d に関する解答群
- cnt == 0
- cnt > 0
- cnt >= slot_num
- cnt < slot_num
- free_num == 0
- free_num > 0
解答選択欄
- a:
- b:
- c:
- d:
- a=エ
- b=イ
- c=ア
- d=ウ
解説
この設問の解説はまだありません。設問2
出席社員が増え,出席社員全員での会議の計画ができない(可能時間帯がない)場合がでてきた。そこで,出席社員を出席が必須の社員(以下,必須出席社員という)とそれ以外の社員(以下,任意出席社員という)に分け,必須出席社員全員が出席可能な時間帯で会議の計画をすることにした。さらに,任意出席社員について順位付けを行い,順位の高い方から最多の社員が出席可能な時間帯に絞込みを行うことにした。この条件で会議が計画できる時間帯を調べるプログラムを作成した。作成したプログラム中の に入れる正しい答えを,解答群の中から選べ。 ここで,には,設問1の正しい答えが入っているものとする。
〔プログラム2の説明〕
〔プログラム2の説明〕
- 関数 allmem_free_slot の引数は次のとおりである。ここで,引数の値に誤りはないものとする。
- num
- 出席社員数
- must_num
- 必須出席社員数
- time_tbl
- 出席社員全員のスケジュール(スケジュール表へのポインタの配列)
- slot_num
- 会議時間(30分単位の時間帯数)
- free
- 会議開催の候補時間帯(SLOT型の配列)
- 候補時間帯 free には,必須出席社員全員が出席可能な時間帯の中で,任意出席社員の順位の高い方から最多の社員が出席可能な時間帯を全て格納する。最後に格納した要素の次の要素の開始時間帯番号には,-1を格納する。
e に関する解答群
- j = 1; j < must_num
- j = 1; j < num
- j = 1; j < num - must_num
- j = must_num; j < num
- j = num - must_num; j < num
f に関する解答群
- wk_free[1][0].s_num == 0
- wk_free[1][0].s_num == -1
- wk_free[1][0].s_num > slot_num
- wk_free[1][0].s_start == 0
- wk_free[1][0].s_start == -1
- wk_free[1][0].s_start > slot_num
解答選択欄
- e:
- f:
- e=ア
- f=オ
解説
この設問の解説はまだありません。広告