過去問解きまくり研究所 ホーム

平成26年度 春期 午前 問8

アルゴリズム

配列に関する問題

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

〔流れ図〕字に書き起こしたもの

        開始
         ↓
   ┌─ ループ 1  k:1,1,m ─┐   (注)ループ端の繰返し指定は,
   │        ┌─────┐        │       変数名:初期値,増分,終値
   │        │  a  │        │       を示す。
   │        └─────┘        │
   └─ ループ 1 ─────────────┘
         ↓
   ┌─ ループ 2  k:1,1,n ─┐
   │        ┌─────┐        │
   │        │  b  │        │
   │        └─────┘        │
   └─ ループ 2 ─────────────┘
         ↓
        終了
答えと解説を見る

✓ これが正解アa:X(k) → Z(k) / b:Y(k) → Z(m+k)

解説

すでに埋めた個数だけずらして置きます。

この流れ図は二つのループでできています。前のループで一方の配列を写し、後のループでもう一方を続けて写す形です。決めることは二つあります。一つ目は、どちらを先に写すかです。設問は、配列 X に格納した文字列の後ろに配列 Y の文字列を連結すると書いているので、先に並ぶのは X の側であり、前のループで X を写します。二つ目は、後のループで書き込みを始める位置です。前のループで埋まったのは先頭から m 個ぶんなので、Y の一文字目を置くのは m の次の配列要素です。よって後のループの書き込み先は、m に繰返しの変数を足した位置になります。長さ 2 と長さ 3 の小さな例で当てると、前半に二文字、後半に三文字が隙間なく並び、正しく連結されます。ずらす幅はすでに埋めた個数である、と覚えておくとよいです。

ほかの選択肢はなぜ違うのか

この問題の用語

出典:平成26年度 春期 基本情報技術者試験 午前 問8(改変:原典の図表をテキストに書き起こした)

同じ用語が出る問題

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)