旧午後H24秋期プログラミング問題

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
早坂さん  
(No.1)
なぜこの回の解説がないのか気になります。
設問2の空欄e解答がエですが、理解できません。
どなたか説明して下さるとありがたいです。
よろしくお願いします。
2024.04.04 21:07
chihiroさん 
FE プラチナマイスター
(No.2)
https://www.fe-siken.com/kakomon/24_aki/pm08.html
H24秋期問8には設問2は存在しませんし解説もあります。
何か間違えていませんかね。
2024.04.04 22:21
早坂さん  
(No.3)
大変申し訳ございません。
H23年秋期問8の問題でした。
2024.04.04 22:28
chihiroさん 
FE プラチナマイスター
(No.4)
算術演算子は右辺、つまり"="の右側にしか存在しないので(表2の状態遷移表参照)、検査はわざわざ開始マークから(プログラム的にはi=1から)行わなくてもいいことになります。また、"="の次の要素は状態遷移表からもわかるように、英数字しか来ないので、算術演算子が現れるのは早くても"="の2つ先ということになります。つまり、検査を"="の2つ先の要素から行えば繰り返しの回数を最小にすることができます。iには1の代わりに「"="の2つ先の要素の要素番号」を代入します。「"="の2つ先の要素の要素番号」に対応するのがエとなります。
2024.04.04 22:55
早坂さん  
(No.5)
回答ありがとうございます。
理解することが出来ました。
そもそも何故デフォルトのpriorityを=の10にしているのですか?
よろしくお願いします。
2024.04.05 07:28
chihiroさん 
FE プラチナマイスター
(No.6)
>そもそも何故デフォルトのpriorityを=の10にしているのですか?
[代入文の変換](2)より
>配列S,Vの開始マークから終端マークまでの範囲を検査し,優先順位が最も高い最初の算術演算子の要素番号を変数 next に格納する。その例を,次に示す。算術演算子がなければ,next に0を格納する。
算術演算子が存在しない場合、例えば
≪Ans=123≫
のような場合だとnext=0を返さなければなりません。
今、αの行が修正前(i←1のまま)であるとします。この場合、検査を開始マーク(の次の要素)から行うため、"="も検査の対象になります。仮に、priority←9とした場合、上記の代入文において、
(c)のIF文の条件式:priority<V[4](=10)
が真となるため、nextの更新処理が行われ、next=4を返してしまいます。つまり、priorityの初期値が9以下だと正しい結果を返してくれません。
同様にpriority←11とした場合を考えてみます。今度は以下のような代入文の場合に不都合が起きます。
≪Ans=X1+X2-123≫
上記だと"+"の要素番号である7を返すべきですが、(c)のIF文の条件式がどの要素番号についても偽となるため、next=0を返してしまいます。つまり、priorityの初期値が11以上だと正しい結果を返してくれません。
以上から、priorityの初期値は10でなくてはなりません。蛇足ですが、αの行を(e)の解答のものに変更した場合、priorityの初期値は3以上かつ10以下の値であれば正しい結果になります(検査範囲内に"="が存在しないため)。
2024.04.05 08:59
早坂さん  
(No.7)
算術演算子を探しているという箇所を見落としておりました。
問題はちゃんと読まなければならないと言うことを学びました。
対応ありがとうございました。
2024.04.05 09:59

返信投稿用フォーム

※CBT試験では出題内容の公開が禁止されているため、直接的・間接的を問わず、出題内容や難易度を尋ねる質問は厳禁です。
※宣伝や迷惑行為を防止するため当サイトとIPAサイト以外のURLを含む記事の投稿は禁止されています。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop