基本情報技術者過去問題 平成25年秋期 午後問8 設問2

問題文は他のサイトを別ウインドウで開いてご覧ください。

引数を設定する。

引数
Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
NULL NULL

初期値を設定します。

表1
C
index
P
index
Num Start Fitcnt
0 0

ループの1回目

Compresseddata の文字が "$" でなければ上の処理を、"$" なら下の処理をします。
True ですので
Plaindata[0] に Compresseddata[0] をいれます。
Pindex を +1 します。
Cindex を +1 します。

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
A NULL

C
index
P
index
Num Start Fitcnt
0 0
1 1

ループの2~7回目

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
A B C D E F G NULL

C
index
P
index
Num Start Fitcnt
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7

ループの8回目

Compresseddata[7] は "$" で判定が False なので下の処理をします。

Num に AlphabetToInt(Comresseddata[7+2])をいれます。(アルファベットの何番目の文字かを返すので「E」は「5」)
Start に AlphabetToInt(Comresseddata[7+1])をいれます。(アルファベットの何番目の文字かを返すので「G」は「7」)

Fitcnt を 0 に設定して、1づつ足しながら Num になるまでループをして、文字を1文字づつコピーします。

よって空欄「e」は「エ」になります。

Plaindata[7+0] に Plaindata[7-7+0] をいれます。
Plaindata[7+1] に Plaindata[7-7+1] をいれます。
Plaindata[7+2] に Plaindata[7-7+2] をいれます。
Plaindata[7+3] に Plaindata[7-7+3] をいれます。
Plaindata[7+4] に Plaindata[7-7+4] をいれます。

Pindex に Num を足します。
Cindexに 3 を足します。

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
A B C D E F G A B C D E NULL

C
index
P
index
Num Start Fitcnt
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7 5 7 0 1 2 3 4 5
10 12

ループの9回目

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
A B C D E F G A B C D E
A B C D
NULL

C
index
P
index
Num Start Fitcnt
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7 5 7 0 1 2 3 4 5
10 12 4 5 0 1 2 3 4
13 16

ループの10回目

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
A B C D E F G A B C D E
A B C D F
NULL

C
index
P
index
Num Start Fitcnt
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7 5 7 0 1 2 3 4 5
10 12 4 5 0 1 2 3 4
13 16
14 17

ループの11回目

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-x] P
length
A B C D E F G A B C D E
A B C D F E F G A B C D
NULL

C
index
P
index
Num Start Fitcnt
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7 5 7 0 1 2 3 4 5
10 12 4 5 0 1 2 3 4
13 16
14 17 7 13 0 1 2 3 4 5 6 7
17 24

最後に Plength に 24 をいれて終了です。

Compressdata[0-16] C
length
A B C D E F G $ G E
$ E D F $ M G
17
Plaindata[0-23] P
length
A B C D E F G A B C D E
A B C D F E F G A B C D
24

「α」の部分はデータを解凍せずにそのまま1文字コピーする処理のことですので、空欄「f」は「カ」です。


ホームに戻るボタン↓