基本情報技術者平成26年春期 午前問8

午前問8

長さm,nの文字列をそれぞれ格納した配列X,Yがある。図は,配列Xに格納した文字列の後ろに,配列Yに格納した文字列を連結したものを配列Zに格納するアルゴリズムを表す流れ図である。図中のa,bに入れる処理として,正しいものはどれか。
ここで,1文字が一つの配列要素に格納されるものとする。
08.gif/image-size:380×323
  • [この問題の出題歴]
  • 基本情報技術者 H13秋期 問14

分類

テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム

正解

解説

流れ図は、ループ1で配列Zに配列Xの文字の先頭から最後までを格納し、続いてループ2で配列Zに配列Yの文字の先頭から最後まで格納する処理を行っています。

例えば配列Xの文字数mが5、配列Yの文字数nが3であったとすると、配列Zの1〜5要素目に配列Xの文字列、6〜8要素目には配列Yの文字列が格納されることが必要です。
配列Xから配列Zへのコピーでは配列の添字が一致しますが、配列Yから配列Zへのコピーを行うループ2では、配列Zの格納開始位置が配列Xの文字数分だけ後ろにずれることになります。そのため配列Yの文字列を適切な位置にコピーするためには配列Zの添字に"配列Xの文字列長(m)+配列Yの現在の文字位置(k)"を指定しなくてはなりません。(例のケースでは、配列Yの文字列を格納する位置は配列Zの要素6からとなる)

したがって
a=X(k) → Z(k)
b=Y(k) → Z(m+k)
が適切です。
08_1.gif/image-size:258×326
© 2010-2020 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop