基本情報技術者試験的な備忘録H28春午後問8アルゴリズム(簡易メモ帳)

20250520基本情報技術者試験的な備忘録H28春午後問8アルゴリズム(簡易メモ帳)
(配列の0始まりは、全要素(len)、兼、次のポインター!?)


アルゴリズム素人です。
基本情報技術者試験素人です。
以下違いだらけです。自分用メモ

参考問題:
H28春午後問8「簡易メモ帳」
(今回、あんまり問題とは関係ない内容。この問題を解いていて、気づいたことです。)

以下は、問題の一部抜粋です。
感謝:基本情報技術者試験過去問道場様m(_ _)m
(著作権等問題ありましたら削除いたします。)
(実際の問題は、過去問道場様をご覧下さい。便利です。感謝)

 





今回、あんまり問題とは関係ない内容。この問題を解いていて、気づいたことです。
どの問題でも同じかもしれないが、「配列の始まりを0とするか、1とするか」について。

以下自分の考えメモです。
自分は、エクセルをよく使うので、表は1始まり。
配列0から始まるのは、結構苦手。

でも、この問題の場合、0始まりで、MemoとDataがある。

で、それぞれMemoCnt DataLenという使用している要素数(①)を表す変数がある。

で、これらの数字は、①だけでなく、次のポインター(空き番地)(②)を示していることに気づく。(恥)

自分は、「エクセル表の「1始まり」」に慣れていたので、
次のポインターが必要な場合は、いちいち「+1」をして変数を作っていた。


この0始まりだと、全要素数=次の(書き込める)ポインターだと考えられる。(恥)

************************************
区別        次のポインター    最終データ        
0始まり    全要素数(len)    全要素-1  

1始まり    全要素数-1    全要素(len)
************************************

で、もう少し言うと、上記のMemoCntを変数iなどと組み合わせて、使う場合、
MemoCntは、全要素(len)および次のポインターなので、
while i: 0 < memo_cntは、ありだが、

while i: 0 ≦ memo_cntだと、あふれてしまう。

(上記は、memo_cnt未満でループしたい場合。)

 

その他気づき
この問題は、実践的な解き方かは分からないが、
各表と各プログラムを列記して考える方がいい。

例:
addmemo図3(実行結果)
addmemoプログラム

上記に加え、実行前の図2も記載しておくとやりやすい。


その他気づき
プログラムの穴あき問題だが、変数が絡む場合、その変数の使いどころを見る。
穴あきと選択肢のにらめっこでは答え出ない・・・。


その他
IPAのサンプル問題だと配列は1始まりしかない気がする・・・。

素人ですみません。