HOME»基本情報技術者試験掲示板»平成23年特別午後問11
投稿する

平成23年特別午後問11 [4453]

 イトウさん(No.1) 
https://www.fe-siken.com/kakomon/23_toku/pm11.html

設問1 bの回答に関しての質問です。

charAt にてindexに格納されている値を取り出す操作をするので
回答はindexの値を返すと考え、回答を「index」としたら不正解でした。

なぜ回答が「index%EXT_SIZE」になるのかご教授願います。

イトウ
2022.09.28 15:08
jjon-comさん(No.2) 
FE ゴールドマイスター
空欄[  b  ] は〔プログラム3〕すなわち
追加可能な0個以上の文字からなる文字列(文字の並び)を
連結リスト構造を用いて実装したListAppendableCharSequenceクラスに関する問題。

> 回答はindexの値を返すと考え、回答を「index」とした

ということは,
追加可能な0個以上の文字からなる文字列(文字の並び)を
char型の配列を用いて実装した〔プログラム2〕
とは違うことを分かっていないのだろう。

EXT_SIZE=10のとき,
〔プログラム3〕の連結リストbucketListに
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"を格納したイメージは次のとおり。
+------------+  +------------+  +------------+
|"ABCDEFGHIJ"|→|"KLMNOPQRST"|→| "UVWXYZ"   |
+------------+  +------------+  +------------+

例えば,上図においてcharAt(23)で文字'X'を得るときは,

Bucket bucket = getBucket(index);
で,23番目の文字を含む連結リスト要素まで到達し,

23を10で割った余り=3 すなわち "UVWXYZ" の3番目 すなわち "X" をreturnで戻り値としている。
2022.09.29 00:19
jjon-comさん(No.3) 
FE ゴールドマイスター
No.2の細かい点を修正。

〔プログラム3〕のBucketクラスでは,連結リストの要素の中身の領域を
private char[] data = new char[EXT_SIZE];
で確保(EXT_SIZE=10ならば10文字長のまとまりで確保)しているので

No.2に登場する "UVWXYZ" は長さ=6ではなく,長さ=10の領域です。
2022.09.29 00:45
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop