IPA過去問ドリル

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

テクノロジ/アルゴリズム

長さ m,n の文字列をそれぞれ格納した配列 X,Y がある。図は,配列 X に格納した文字列の後ろに,配列 Y に格納した文字列を連結したものを,配列 Z に格納するアルゴリズムを表す流れ図である。図中の a,b に入れる処理として,適切なものはどれか。ここで,1文字が一つの配列要素に格納されるものとする。 (注)ループ端の繰返し指定は,変数名:初期値,増分,終値を示す。

平成26年度 春期 基本情報技術者試験 午前 問8の図

出典:平成26年度 春期 基本情報技術者試験 午前 問8

正解:ア

解説

配列Zの前半(先頭からm個)に配列Xの内容を,後半(m+1番目からn個)に配列Yの内容を格納すれば,XとYを連結したものになります。ループ1(kが1からmまで)ではXの各要素をそのままZの同じ添字位置に格納すればよいのでa:X(k)→Z(k)。ループ2(kが1からnまで)ではYの要素をZのm+k番目(Xのm個の後ろ)に格納する必要があるのでb:Y(k)→Z(m+k)となります。

選択肢ごとの解説

  • 正しい。前半にXをそのまま,後半にYをXの長さ分だけずらして格納することで,XとYを正しく連結できます。
  • 誤り。bでYをZ(n+k)に格納すると,Yの長さnだけずれた位置になり,Xの後ろに連続してつながりません。
  • 誤り。aでYをZ(k)に格納すると,先頭にYが入ってしまい,XとYの順序が逆になります。
  • 誤り。a,bともに順序が入れ替わっており,さらにbのずらし幅もnになっているため,正しく連結されません。
基本情報技術者の過去問を演習モードで解く