質問編集履歴

2

トレース手順と画像をつけました。

2015/09/23 11:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -61,3 +61,59 @@
61
61
  [リンク内容](http://www.fe-siken.com/kakomon/17_aki/)
62
62
 
63
63
  午後問題の14~18pです。
64
+
65
+
66
+
67
+ 【トレース手順】
68
+
69
+ ・最初の文字 "(" の処理
70
+
71
+ ⇒ スタックの先頭文字 (EOS) の方が優先度が低い
72
+
73
+ ⇒スタックに "(" を格納
74
+
75
+ ・2番目の文字 "2" の処理
76
+
77
+ ⇒スタックの先頭文字の方が優先度が高いが "(" である
78
+
79
+ ⇒スタックに "2" を格納
80
+
81
+ ・3番目の文字 "+" の処理
82
+
83
+ ⇒スタックの先頭文字の方が優先度が高い
84
+
85
+ ⇒Postfix[0] に "2" を代入
86
+
87
+ ⇒スタックに "+" を格納
88
+
89
+ ・4番目の文字 "4" の処理
90
+
91
+ ⇒スタックの先頭文字の方が優先度が低い
92
+
93
+ ⇒スタックに "4" を格納
94
+
95
+ ・5番目の文字 ")" の処理
96
+
97
+ ⇒スタックの先頭文字の方が優先度が高い
98
+
99
+ ⇒Postfix[1] に "4" を代入
100
+
101
+
102
+
103
+ ここでどうしても止まってしまいます。この時点で
104
+
105
+ Postfix 【24】
106
+
107
+ スタック 【+(EOS】
108
+
109
+ になっていますよね? 回答によるとこの次は
110
+
111
+ Postfix 【24+】
112
+
113
+ スタック 【(EOS】
114
+
115
+ になるということですが、pop() で "+" を取り出すにしてもそれをPostfixに代入する処理がないような…
116
+
117
+ あとこの ")" の処理が終わった後スタックは【EOS】だけになっているそうなのですが、いつのまにか "(" が消えています。これも一体何なのでしょうか。
118
+
119
+ ![イメージ説明](48d031b1db1c85eb8f32dcc194dd54c5.jpeg)

1

リンクを貼り付けました。

2015/09/23 11:31

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -57,3 +57,7 @@
57
57
  配列Exptextから取り出した文字が ")" だった時の処理 pop() がよくわかりません。これはスタックから取り出すんですよね? スタックの先頭から取り出したその文字を次にどうするのかがわかりません。
58
58
 
59
59
  この問題は配列Exptextの例として (2+4)×3+5×6 を取り上げてるんですが、トレースしていくとどうしても5番目の文字で止まってしまいます。回答の処理の流れを見てもいまいちわかりません。またコメントの「取り出した要素は使わない」というのもよくわからないというか、このプログラムの処理後の文字列は "(" と ")" が消えているので多分これのことを言っているんだろうなとはなんとなく思うのですが、トレースしていくと「???」となってしまいます。どなたか教えてください。
60
+
61
+ [リンク内容](http://www.fe-siken.com/kakomon/17_aki/)
62
+
63
+ 午後問題の14~18pです。