アルゴリズム(全80問中31問目)
No.31解説へ
長さm,nの文字列をそれぞれ格納した配列X,Yがある。図は,配列Xに格納した文字列の後ろに,配列Yに格納した文字列を連結したものを配列Zに格納するアルゴリズムを表す流れ図である。図中のa,bに入れる処理として,正しいものはどれか。
ここで,1文字が一つの配列要素に格納されるものとする。
ここで,1文字が一つの配列要素に格納されるものとする。
出典:平成26年春期 問 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)
が適切です。
例えば配列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)
が適切です。
広告