HOME»基本情報技術者試験掲示板»旧午後H24秋期プログラミング問題
投稿する

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

 早坂さん(No.1) 
なぜこの回の解説がないのか気になります。
設問2の空欄e解答がエですが、理解できません。
どなたか説明して下さるとありがたいです。
よろしくお願いします。
2024.04.04 21:07
chihiroさん(No.2) 
FE プラチナマイスター
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さん(No.4) 
FE プラチナマイスター
算術演算子は右辺、つまり"="の右側にしか存在しないので(表2の状態遷移表参照)、検査はわざわざ開始マークから(プログラム的にはi=1から)行わなくてもいいことになります。また、"="の次の要素は状態遷移表からもわかるように、英数字しか来ないので、算術演算子が現れるのは早くても"="の2つ先ということになります。つまり、検査を"="の2つ先の要素から行えば繰り返しの回数を最小にすることができます。iには1の代わりに「"="の2つ先の要素の要素番号」を代入します。「"="の2つ先の要素の要素番号」に対応するのがエとなります。
2024.04.04 22:55
 早坂さん(No.5) 
回答ありがとうございます。
理解することが出来ました。
そもそも何故デフォルトのpriorityを=の10にしているのですか?
よろしくお願いします。
2024.04.05 07:28
chihiroさん(No.6) 
FE プラチナマイスター
>そもそも何故デフォルトの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
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop