平成22年春期午後問2 設問3 イ
広告
てんてんさん
(No.1)
https://www.ap-siken.com/kakomon/22_haru/pm02.html
こちらの問題に関して正誤判定とその理由などをご教示いただきたいです。
模範解答:memoArrayCount - 1
自分の解答:findArrayIndex(memoArrayCount)
としました。
自身の解答に至った経緯としては図5内の付箋ID=idである付箋データの添字を
「findArrayIndex(id)」として求めていたためです。
「配列のindex+1から末尾まで処理したい」→「末尾の添字が知りたい」→「末尾のIDはmemoArrayCountと等しい」and「付箋ID=idである付箋データの添字を『findArrayIndex(id)』として求めている」
と考え解答を作成しました。
どなたかご回答いただけると幸いです。
こちらの問題に関して正誤判定とその理由などをご教示いただきたいです。
模範解答:memoArrayCount - 1
自分の解答:findArrayIndex(memoArrayCount)
としました。
自身の解答に至った経緯としては図5内の付箋ID=idである付箋データの添字を
「findArrayIndex(id)」として求めていたためです。
「配列のindex+1から末尾まで処理したい」→「末尾の添字が知りたい」→「末尾のIDはmemoArrayCountと等しい」and「付箋ID=idである付箋データの添字を『findArrayIndex(id)』として求めている」
と考え解答を作成しました。
どなたかご回答いただけると幸いです。
2025.04.16 18:26
basyouさん
(No.2)
てんてんさん
イは MemoArrayCount-1 だけが正解です。
「末尾のIDはmemoArrayCountと等しい」このご認識が誤りとなります。
FindArrayIndex(id)は「MemoArray[]の中で中身がidである要素の添え字を返す」関数です。
つまり、FindArrayIndex( memoArrayCount )は、「MemoArray[]の中身がmemoArrayCountである要素の添え字」を指す、ということになります。
設問2の解説にある図で考えてみます。
初期状態は
MemoArray = [ 1, 2, 3, 4, 5 ] であり、
memoArrayCount = 5 ですね。
なので、
FindArrayIndex( memoArrayCount ) = MemoArray[]の中身が"5"である要素の添え字
であり、"5"は5番目( MemoArray[4] )に入っていますから、
FindArrayIndex( 5 ) = 4 となります。
MemoArrayCount-1 も 4 ですので、一致します。ここまでのご認識は合っています。
この状態で、MoveForeArray( 2 )を実行してみます。
MoveForeArray( id )は「付箋IDがidであるデータを末尾に移動させる」関数ですね。
解説図にある通り、MoveForeArray( 2 )を実行すると2が末尾にいき、後ろの要素を前に詰めます。
すると実行後のMemoArray[]は
MemoArray = [ 1, 3, 4, 5, 2 ]
になっていますね。
ここで、てんてんさんのご回答である FindArrayindex( memoArrayCount )はどうなるかというと、
"5"が入っているのは4番目( MemoArray[3] )ですから、
FindArrayIndex( 5 ) = 3
が返ってきます。
イに”3”が入ってしまうと3番目までしか前に詰めてくれなくなるので、MoveForeArray()が成り立たなくなってしまいます。
仮にMemoArray[]が
MemoArray = [ 5, 1, 2, 3, 4]
だったらFindArrayIndex( 5 )は"1"を返すわけですから、for文が最大でも1回しか実行されないことになります。
常に末尾まで詰めるために"イ"は"要素数"を入れなければならないので、固定値であるMemoArrayCount-1でなければらないということです。
イは MemoArrayCount-1 だけが正解です。
「末尾のIDはmemoArrayCountと等しい」このご認識が誤りとなります。
FindArrayIndex(id)は「MemoArray[]の中で中身がidである要素の添え字を返す」関数です。
つまり、FindArrayIndex( memoArrayCount )は、「MemoArray[]の中身がmemoArrayCountである要素の添え字」を指す、ということになります。
設問2の解説にある図で考えてみます。
初期状態は
MemoArray = [ 1, 2, 3, 4, 5 ] であり、
memoArrayCount = 5 ですね。
なので、
FindArrayIndex( memoArrayCount ) = MemoArray[]の中身が"5"である要素の添え字
であり、"5"は5番目( MemoArray[4] )に入っていますから、
FindArrayIndex( 5 ) = 4 となります。
MemoArrayCount-1 も 4 ですので、一致します。ここまでのご認識は合っています。
この状態で、MoveForeArray( 2 )を実行してみます。
MoveForeArray( id )は「付箋IDがidであるデータを末尾に移動させる」関数ですね。
解説図にある通り、MoveForeArray( 2 )を実行すると2が末尾にいき、後ろの要素を前に詰めます。
すると実行後のMemoArray[]は
MemoArray = [ 1, 3, 4, 5, 2 ]
になっていますね。
ここで、てんてんさんのご回答である FindArrayindex( memoArrayCount )はどうなるかというと、
"5"が入っているのは4番目( MemoArray[3] )ですから、
FindArrayIndex( 5 ) = 3
が返ってきます。
イに”3”が入ってしまうと3番目までしか前に詰めてくれなくなるので、MoveForeArray()が成り立たなくなってしまいます。
仮にMemoArray[]が
MemoArray = [ 5, 1, 2, 3, 4]
だったらFindArrayIndex( 5 )は"1"を返すわけですから、for文が最大でも1回しか実行されないことになります。
常に末尾まで詰めるために"イ"は"要素数"を入れなければならないので、固定値であるMemoArrayCount-1でなければらないということです。
2025.04.16 19:16
てんてんさん
(No.3)
basyouさん
ご回答いただきありがとうございます。
配列内のidが変化しうるというのを失念していました。
実行後の配列内idがどのようになるかなど例を踏まえてご説明いただけたため非常に理解がしやすかったです。
ご回答いただきありがとうございます。
配列内のidが変化しうるというのを失念していました。
実行後の配列内idがどのようになるかなど例を踏まえてご説明いただけたため非常に理解がしやすかったです。
2025.04.16 19:26
広告
返信投稿用フォーム
スパム防止のためにスレッド作成日から40日経過したスレッドへの投稿はできません。
広告