電腦最近有點喪心病狂,顯示codeblock的崩潰,緊接著vs的元件缺失,到最後dev的編譯限制,直接讓我失去了掉頭髮的興趣,跑出來,在電閱寫一寫。
題目描述:
逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 + 3的逆波蘭表示法為+ 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如(2 + 3) * 4的逆波蘭表示法為* + 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括+ - * /四個。
輸入輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數。
輸出輸出為一行,表示式的值。
可直接用printf("%f\n", v)輸出表示式的值v。
樣例輸入
* + 11.0 12.0 + 24.0 35.0樣例輸出
1357.000000不多逼逼直接上**:
#include#include#includeusing namespace std;
double a;
char ch[110] ;
double caculate()
}int main()
利用遞迴實現的,本來的思路是用棧來實現的,但限於水平有限,在控制輸入的方面把控的不是很好,實現起來靈活性很差,然後在網上參考一位同學的想法,利用遞迴實現, 不得不說,在我遞迴的想法還不是很成熟的時候,看到這種清爽的**,真的是一種享受。
簡要分析:
遞迴實現:
1、如果輸入乙個數字,執行default,通過atof將字元轉換為double型別返回。
2、如果輸入乙個運算子,執行相應的case語句,return後執行caculate方法,實現遞迴:如果輸入數字,執行1操作,如果輸入運算子,執行2操作
3、一直到最後兩個數進行完相應的運算操作後,轉換為double型別的資料輸出。
ps:用文字寫遞迴對我這種理科生來說有點難,但是這種簡單的遞迴,多看兩遍**基本就明白了,遞迴很重要,還是得好好練練啊。
棧練習 逆波蘭表示式
字尾表示式 逆波蘭表示式 有效操作只有 且運算元是整數 include include include include using namespace std define overflow 2 define ok 1 define error 1 typedef int status typede...
波蘭逆波蘭表示式
實現乙個基本的計算器來計算簡單的表示式字串。表示式字串只包含非負整數,算符 左括號 和右括號 整數除法需要 向下截斷 你可以假定給定的表示式總是有效的。所有的中間結果的範圍為 231,231 1 class solution s2.push s.substr l,r l l r 碰見符號 else ...
php逆波蘭表示式,PHP逆波蘭示意與表示式計算
php逆波蘭表示與表示式計算 說起表示式計算,想起乙個笑話。我向他介紹,我們的php開發框架中有使用rpn對公式解析計算的類。於是,他笑我無知了。並且,還列出一系列的佐證,證明,在php中直接用eval函式就能解決一切問題。也許,你會同意這位老兄的看法。不要緊。你可以看一下peer函式庫。peer函...