平成13年秋期試験問題 午前問14

問14解説へ
長さm,nの文字列を格納した配列X,Yがある。図は,長さmの文字列の後ろに長さnの文字列を連結したものを配列Zに格納するアルゴリズムを表す流れ図である。図中のa,bに入れる処理として,正しいものはどれか。ここで,1文字が一つの配列要素に格納されるものとする。


広告
解説
流れ図は、ループ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)
が適切です。
例えば配列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)
が適切です。

広告