アルゴリズム(全80問中31問目)

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
長さm,nの文字列をそれぞれ格納した配列X,Yがある。図は,配列Xに格納した文字列の後ろに,配列Yに格納した文字列を連結したものを配列Zに格納するアルゴリズムを表す流れ図である。図中のa,bに入れる処理として,正しいものはどれか。
ここで,1文字が一つの配列要素に格納されるものとする。
08.png

出典:平成26年春期 問 8

08a.png
正解 問題へ
分野:テクノロジ系
中分類:アルゴリズムとプログラミング
小分類:アルゴリズム
解説
流れ図は、ループ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.png

この問題の出題歴


Pagetop