基本情報技術者平成13年秋期 午前問14

問14

長さm,nの文字列を格納した配列X,Yがある。図は,長さmの文字列の後ろに長さnの文字列を連結したものを配列Zに格納するアルゴリズムを表す流れ図である。図中のa,bに入れる処理として,正しいものはどれか。ここで,1文字が一つの配列要素に格納されるものとする。
14.png/image-size:374×328
  • 14a.png/image-size:342×137

            
  • [出題歴]
  • 基本情報技術者 H26春期 問8

分類

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

正解

解説

流れ図は、ループ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)
が適切です。
14_1.png/image-size:258×326
© 2010-2024 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop