HOME»基本情報技術者試験掲示板»平成30年秋期午後問8
投稿する

平成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になってしまいます。どこの理解が誤っておりますでしょうか。
教えてください。
2020.08.24 18:18
助け人さん(No.2) 
FE ゴールドマイスター
Priorityの
十の桁は、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の処理なのか、よくわからないため教えてもらえないでしょうか。
2020.08.25 01:12
匿名さん(No.5) 
No.1
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 ) ・・・
の構造です。
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
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop