東京理科大学 infoserv[更新日]2001.11.05


問4

 次のプログラムの説明,擬似言語の記述形式の説明及びプログラムを 読んで,設問1,2 に答えよ。

〔プログラムの説明〕

配列 M の要素番号 from から len 個の配列要素(これを複写元領域と呼ぶ)の 内容を,配列 M の要素番号 to から len 個の配列要素 (これを複写先領域と呼ぶ)へ複写する。

(1) 配列 M の要素数は size で,size > 0 である。要素番号は 0 から始まる。

(2) 複写する要素数は len で,len ≧ 0 である。

(3) 処理は,1 要素を読み出して格納する操作を,要素番号の昇順に len 回繰り返す。

(4) 処理の概要を,次に示す。

〔擬似言語の記述形式の説明〕

〔プログラム 1〕

設問1  次の記述中の に入れる正しい答えを,解答群の中から選べ。

プログラム 1 の選択処理では,from,to,len の値が負でないこと, 及びプログラムの処理中に配列 M の添字の値が上限を超えないことを判定している。 このために指定すべき条件式は, である。

複写元領域と複写先領域とが一部重複していると, プログラム実行前の複写元領域の内容と,プログラム実行後の複写先領域の 内容とが一致しない場合が生ずる。 例えば,プログラム実行前の複写元領域の内容が,次のとき,

to の値を としてプログラムを実行すると, 実行後の複写先領域の内容は,

となる。

一般に,内容の一致が保証できないのは,複写先として格納された要素が, 後に複写元の要素として読み出される場合であるから, という条件のときである。

a に関する解答群

ア from < size and to < size

イ from < size and to < size and len < size

ウ from+len < size and to+len < size

エ from+len ≦ size and to+len ≦ size

b に関する解答群

ア from−1    イ from+len−1

ウ from+1    エ from+len+1

c に関する解答群

ア from < to and to < from+len

イ to < from and from < to+len

ウ from < to and to ≦ from+len

エ to < from and from ≦ to+len

設問2  次のプログラム 2 中の に入れる正しい答えを,解答群の中から選べ。

前に示したプログラムの説明に,次の (5) 〜 (7) を追加して, その仕様を満たすプログラム 2 を作る。

(5) 配列 M の配列要素は,最後尾から先頭へと循環しているものとする。 すなわち,複写元領域及び複写先領域のいずれも,M[size−1] の直後に M[0] が続くものとして,処理を継続する。 次に示すのは,複写元領域が循環している場合の例である。

(6) 複写する要素数 len の値の範囲は,0 ≦ len < size とする。

(7) プログラム実行前の複写元領域の内容と,プログラム実行後の複写先領域の内容との一致が保証できないときは,複写をせずにエラー処理プログラムを呼ぶ。

〔プログラム 2 〕

解答群

ア from+len ≦ to and to ≦ from

イ from+len ≦ to or to ≦ from

ウ from+len−size ≦ to and to ≦ from

エ from+len−size ≦ to or to ≦ from


東京理科大学 infoserv 戻る 次頁:問05