平成23年特別午後問11

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
イトウさん  
(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さん 
FE ゴールドマイスター
(No.2)
空欄[  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さん 
FE ゴールドマイスター
(No.3)
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日経過したスレッドへの投稿はできません。

その他のスレッド


Pagetop