1 #include 23 #include 4
5 #include 6
7 #include 8
9 #include 10
11using
namespace
std;
1213
1415
char precede(char a, char b) ,
2223 ,
2425 ,
2627 ,
2829 ,
3031 ,
3233 ,
3435
3637 }; //
優先順序**
3839
for(i=0; i<8; i++)
4041
if(table[0][i]==a) //
尋找運算子a
4243
break;44
45for(j=0; j<8; j++) //
尋找運算子b
4647
if(table[j][0]==b)
4849
break;50
51return
table[j][i];
5253}54
5556
57bool calcu_temp(double a, char theta, double b, double &r)
8283
return
true;84
85}8687
8889
bool isoper(char ch) ;
9293
inti;
9495
for(i=0; i<7; i++)
102103
return
false
;104
105}
106107
108109
bool calculate(char s, double &result)
152153
if(!point) //
整數部分
154155 num = num * 10 + ( s[j] - 48
);156
157else
164165 j++;
166167
}168
169 i =j;
170171 num_stack.push(num); //
將該數字壓入棧中
172173
}174
175else
if(isoper(s[i]))
218219
}220
221}
222223 result = num_stack.top(); //
最後數字棧中的數即為表示式的最終結果
224225
return
true
;226
227}
228229
230231
bool check(char s)
246247
if(flag)
248249
return
false
;250
251else
252253
return
true
;254
255}
256257
258259
intmain()
287288 s2[j++] = '='
;289
290 s2[j] = '\0'
;291
292if(check(s2))
303304
else
305306 printf("
括號不匹配\n");
307308
}309
310return0;
311312 }
棧實現表示式求值(C
為了實現用棧計算算數表示式的值,需設定兩個工作棧 用於儲存運算子的棧opter,以及用於儲存運算元及中間結果的棧opval。演算法基本思想如下 1 首先將運算元棧opval設為空棧,而將 作為運算子棧opter的棧底元素,這樣的目的是判斷表示式是否求值完畢。2 依次讀入表示式的每個字元,表示式須以 ...
C語言 用棧實現表示式求值 順序棧
棧的基本操作 優先順序函式 precede 求值函式 operate 判斷操作符函式 in 表示式求值函式 evaluateexpression 其他 操作符棧 optr 運算元棧 opnd 請輸入表示式 3 5 2 第一種輸入方式是直接打出表示式進行整體輸入,而第二種則是以乙個乙個的方式讀入,第一...
表示式求值 棧實現
宣告 僅個人小記 演算法思想 一 設定乙個運算子棧,設定乙個字尾表示式字串 二 從左到右依次對中綴表示式中的每個字元ch分別進行一下處理,直至表示式結束 1.若ch是左括號 將其入棧 2.若 ch 是數字,將其後連續若干數字新增到字尾表示式字串之後,在新增空格作為分割符 3.若ch是運算子,先將棧頂...