基本情報技術者試験の過去問と解説
[TOP] [午前分野別] [午後分野別] [キーワード索引] [令和元年秋午前] [令和元年秋午後]

平成18年 秋期 基本情報技術者 午後 問04
問04   タブ文字を展開するプログラム

 次のプログラムの説明及びプログラムを読んで,設問1,2に答えよ。

〔プログラム1の説明〕

 副プログラム TabSpc1 は,タブ文字を展開するプログラムである。

(1) TabSpc1 は,文字型配列 Src を先頭から調べ,Src 中のすべてのタブ文字を それぞれ一つ以上の間隔文字(スペース)に置換して,文字型配列 Dst に格納する 。 タブ文字以外の文字は,そのままDstに格納する。

(2) 文字型配列の各要素には,文字を1文字ずつ順に格納し, 最後の文字の次の要素にはシステム定数である EOS を格納する。 なお,配列の添字は1から始まり,添字の値を文字位置と呼ぶ。

(3) Src 中にタブ文字が出現した場合,次の文字が最も近い右のタブ位置に格納されるように, タブ文字を一つ以上の間隔文字に置換して,Dst に格納する。 ここで,タブ位置とは,引数で渡されるタブ間隔(≧ 2 )を用いた次の式で計算される文字位置である。

タブ位置 = タブ間隔 × n + 1  ( n = 1,2,… )

(4) タブ間隔が4のときの実行例を図1に示す。 “j”を Dst のタブ位置である文字位置 13(= 4 × 3 + 1 )に格納したのでは, タブ文字が間隔文字に置き換わらないので,最も近い右のタブ位置で ある文字位置 17(= 4 × 4 + 1 )に格納する。

    注 TABはタブ文字を,▼はタブ位置を,△は間隔文字を表す。

    図1 タブ間隔が4のときの TabSpc1 の実行例

(5) Dst は十分に大きいものとする。

(6) 副プログラム TabSpc1 の引数の仕様を表1に示す。

   表1 TabSpc1 の引数の仕様
引数 データ型 入力/出力 意味
Src[]文字型入力対象となる文字型配列
Dst[]文字型出力出力する文字型配列
TabGap整数型入力タブ間隔(≧ 2 )

〔プログラム1〕

設問1 プログラム1中の に入れる正しい答えを, 解答群の中から選べ。

a に関する解答群

ア Didx + 1              イ Didx − 1

ウ Didx + TabGap + 1         エ Didx + TabGap − 1

b,c に関する解答群

ア Didx ← Didx + 1          イ Dst[Didx] ← Src[Sidx]

ウ Dst[Didx + 1] ← Src[Sidx]     エ Dst[Didx] ← Src[Sidx + 1]

解答 a ←クリックすると正解が表示されます

解答 b ←クリックすると正解が表示されます

解答 c ←クリックすると正解が表示されます

基本情報技術者試験


設問2 プログラム1を改造して,タブ位置を任意の文字位置に指定できるような プログラム2を作成した。 ただし,タブ位置は2以上の値で,隣り合うタブ位置の間隔も2以上とする。 タブ位置は引数で渡される整数型配列 TabSet に昇順に格納され,最後のタブ位置が 格納された次の配列要素には −1が格納されている。

 なお,最後のタブ位置以降にタブ文字が出現した場合は,一つの間隔文字に置換する。

 図1と同じ動作をさせる場合の TabSet の内容を図2に, プログラム2に示す副プログラム TabSpc2 の引数の仕様を表2に示す。

 プログラム2中の に入れる正しい答えを,解答群の中から選べ。 ただし, には設問1の正しい答えが入っているものとする。

TabSet[1]
TabSet[2]
TabSet[3]
TabSet[4]
TabSet[m]
     5
     9
     13
     17
     −1

図2 整数型配列 TabSet の内容(図1と同じ動作をさせる場合)

     表2 TabSpc2 の引数の仕様

引数 データ型 入力/出力 意味
Src[]文字型入力対象となる文字型配列
Dst[]文字型出力出力する文字型配列
TabSet[]整数型入力タブ位置を格納した整数型配列

〔プログラム2〕

d,e に関する解答群

ア TabPos ← TabSet[Tidx]

イ TabPos ← TabSet[Tidx] + Didx

ウ TabPos ← TabSet[Tidx] − Didx

エ Tidx ← Didx + 1

オ Tidx ← TabPos + 1

カ Tidx ← Tidx + 1

解答 d ←クリックすると正解が表示されます

解答 e ←クリックすると正解が表示されます


[←前の問題] [次の問題→] [問題一覧表] [分野別] [基本情報技術者試験TOP ]