簡單計算器(棧)

2022-07-12 05:57:09 字數 718 閱讀 1040

開始複習棧,這個題感覺見得很多,各種各樣的,但是核心思路就是把中綴表示式轉化為字尾表示式,我們老師說這個東西也叫作中序二叉樹轉後序二叉樹。大概實現的方式就是用棧來實現

最開始感覺沒啥思路,因為之前一直都不會這種題 論為什麼我這麼菜,之前沒有好好學過棧,知道了stl中有stack後還是方便很多

第一次做的思路就是直接對運算元和操作運算子入棧,挨著挨著算,編了一通之後交上去全wa,因為這樣做的話是沒有考慮到一些複雜運算(優先順序問題)。這樣的話,我們就不能邊讀入邊處理,應該整個輸入之後,轉為字尾表示式

這是大概的思路,但是中間的一些實現方法中有一些細節。因為涉及到整行讀入,用string的話應該用getline,但是string的比較函式我個人是不知道的,所以在判斷等於0結束的情況時,還需要判斷長度。用char的話,整行讀入用gets,有乙個strcmp比較函式,可以直接使用,挺方便的。對於優先順序的話,寫個函式就行了

#includeusing namespace std;

int yxj(char q)

int main()

}else if(op.empty()||yxj(a[i])>yxj(op.top()))else

} printf("%.2lf\n",num.top());

} return 0;

}

當然,不止有棧的做法,同機房的大佬也有用佇列做的,大家可以去看看,佇列做法

簡單計算器 STL 棧

讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。output 對每個測試用例輸出1行,即該表示式的值,精確到小數點後...

簡單計算器(棧結構)

描述 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值.輸入格式 多case,包含若干個測試用例,每個用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應結果不要輸出.輸出格式 每個測試用例輸出一行,即該表示式的值,精確到小數點後2...

F 簡單計算器 棧

description 讀入乙個只包含 的非負整數計算表示式,計算該表示式的值。input 測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。output 對每個測試用例輸出1行,即該表...