HOME»基本情報技術者試験掲示板»平成30年秋期午後問8
投稿する
chrが 2 の時、nestは0
chrが × の時、nestは2
chrが ( の時、nestは12
chrが 3・4の時、nestは12
chrが - の時、nestは13
となってしまいます・・・どこかで、自分の理解が間違っていると
思うのですが、nestはずっと増え続けるし・・・と。
すいません、簡単ですが、間違えてそうなポイントはどこになりますでしょうか?
平成30年秋期午後問8 [2433]
午後苦手さん(No.1)
https://www.fe-siken.com/kakomon/30_aki/pm08.html
プログラム(解析処理の部分)の「+-×÷」処理の流れについて教えてください。
①「+-×÷」のいずれかを判定、対象の時は以下処理
②「+-×÷」をPriorityに格納
③「+」、「-」のいずれかを判定
④対象の時 → nestに+1
⑤対象外の時 → nestに+2
⑥Opcntを+1する
⑦次の文字を格納するValueに0を格納する
「+-」は①②③④⑥⑦を処理
「×÷」は①②③⑤⑥⑦を処理
という流れになるという理解ですが、トレースしても、priority(1)が13になってしまいます。どこの理解が誤っておりますでしょうか。
教えてください。
プログラム(解析処理の部分)の「+-×÷」処理の流れについて教えてください。
①「+-×÷」のいずれかを判定、対象の時は以下処理
②「+-×÷」をPriorityに格納
③「+」、「-」のいずれかを判定
④対象の時 → nestに+1
⑤対象外の時 → nestに+2
⑥Opcntを+1する
⑦次の文字を格納するValueに0を格納する
「+-」は①②③④⑥⑦を処理
「×÷」は①②③⑤⑥⑦を処理
という流れになるという理解ですが、トレースしても、priority(1)が13になってしまいます。どこの理解が誤っておりますでしょうか。
教えてください。
2020.08.24 18:18
助け人さん(No.2)
★FE ゴールドマイスター
Priorityの
十の桁は、nest(括弧なしの位置にある演算子なら0、括弧一つの内側にある演算子なら1、括弧二つの内側にある演算子なら2、・・・)であり、
一の桁は、chrが'+'か'-'なら1、chrが'×'か'÷'なら2ですから、
13になることはありません。
どのようにトレースすると、13になるのでしょうか?
十の桁は、nest(括弧なしの位置にある演算子なら0、括弧一つの内側にある演算子なら1、括弧二つの内側にある演算子なら2、・・・)であり、
一の桁は、chrが'+'か'-'なら1、chrが'×'か'÷'なら2ですから、
13になることはありません。
どのようにトレースすると、13になるのでしょうか?
2020.08.24 18:48
午後苦手さん(No.3)
>どのようにトレースすると、13になるのでしょうか?
chrが 2 の時、nestは0
chrが × の時、nestは2
chrが ( の時、nestは12
chrが 3・4の時、nestは12
chrが - の時、nestは13
となってしまいます・・・どこかで、自分の理解が間違っていると
思うのですが、nestはずっと増え続けるし・・・と。
すいません、簡単ですが、間違えてそうなポイントはどこになりますでしょうか?
2020.08.25 01:08
午後苦手さん(No.4)
処理の流れでわからない部分もございます。
・Opcnt ← Opcnt+1
・Value[Opcnt]←0
ここの処理は、+-×÷以外の時に行われる処理ですか?それとも+-x÷の時に行われる処理でしょうか?
IF THENの処理なのか、elseの処理なのか、よくわからないため教えてもらえないでしょうか。
・Opcnt ← Opcnt+1
・Value[Opcnt]←0
ここの処理は、+-×÷以外の時に行われる処理ですか?それとも+-x÷の時に行われる処理でしょうか?
IF THENの処理なのか、elseの処理なのか、よくわからないため教えてもらえないでしょうか。
2020.08.25 01:12
匿名さん(No.5)
No.1
nestについてですが、Priority[OpCnt] ← nest + 1 のところでは、nestの値は変わりません。(nestに代入していないため)
変わるのは nest ← nest + 10 の時だけです。
なので、nestの一の位が0以外になることはありません。
No.4
こちらは、+-x÷に実行します。
nestについてですが、Priority[OpCnt] ← nest + 1 のところでは、nestの値は変わりません。(nestに代入していないため)
変わるのは nest ← nest + 10 の時だけです。
なので、nestの一の位が0以外になることはありません。
No.4
こちらは、+-x÷に実行します。
2020.08.25 06:47
助け人さん(No.6)
★FE ゴールドマイスター
午後苦手さんのトレースは、プログラムの①と②を、nest ← nest + 1、nest ← nest + 2と勘違いしています。nestの取り得る値は、③と④により、0、10、20、・・・です。
chrが 2 の時、nestは0のまま
chrが × の時、②により、Priority[0]は2。nestは0のまま
chrが ( の時、③により、nestは10
chrが 3・4の時、nestは10のまま
chrが - の時、①により、Priority[1]は11。nestは10のまま
・Opcnt ← Opcnt+1
・Value[Opcnt]←0
の処理は、+-x÷の時に行われ、+-×÷以外の時には行われません。
IF THEN 0~9 ・・・
IF THEN +-x÷ ・・・
IF THEN ( ・・・
IF THEN ) ・・・
の構造です。
chrが 2 の時、nestは0のまま
chrが × の時、②により、Priority[0]は2。nestは0のまま
chrが ( の時、③により、nestは10
chrが 3・4の時、nestは10のまま
chrが - の時、①により、Priority[1]は11。nestは10のまま
・Opcnt ← Opcnt+1
・Value[Opcnt]←0
の処理は、+-x÷の時に行われ、+-×÷以外の時には行われません。
IF THEN 0~9 ・・・
IF THEN +-x÷ ・・・
IF THEN ( ・・・
IF THEN ) ・・・
の構造です。
2020.08.25 06:55
ニコりんさん(No.7)
〉午後苦手さんのトレースは、プログラムの①と②を、nest ← nest + 1、nest ← nest + 2と勘違いしています。
ここの部分を勘違いしておりました。何回みなおししたつもりだつたのですが、先入観みたいなものがあったのか、きづけなかったです。
本当にありがとうございます!
低レベルな質問ですいませんでした。また今後ともよろしくお願いします。
ここの部分を勘違いしておりました。何回みなおししたつもりだつたのですが、先入観みたいなものがあったのか、きづけなかったです。
本当にありがとうございます!
低レベルな質問ですいませんでした。また今後ともよろしくお願いします。
2020.08.25 20:39
助け人さん(No.8)
★FE ゴールドマイスター
念のためお聞きしますが、スレ主の午後苦手さんとニコりんさんは同一人物ですか?もしそうなら、統一してください。
2020.08.25 20:50