逆波蘭式(poj

2021-10-05 14:32:57 字數 537 閱讀 6534

逆波蘭表示式是一種把運算子前置的算術表示式,例如普通的表示式2 + 3的逆波蘭表示法為+ 2 3。逆波蘭表示式的優點是運算子之間不必有優先順序關係,也不必用括號改變運算次序,例如(2 + 3) * 4的逆波蘭表示法為* + 2 3 4。本題求解逆波蘭表示式的值,其中運算子包括+ - * /四個。

輸入為一行,其中運算子和運算數之間都用空格分隔,運算數是浮點數。

可直接用printf("%f\n", v)輸出表示式的值v。

1357.000000

可使用atof(str)把字串轉換為乙個double型別的浮點數。atof定義在math.h中。

此題可使用函式遞迴呼叫的方法求解。

此題的逆波蘭式跟資料結構嚴書中的逆波蘭式定義不一樣,注意就好,相當於嚴書中的波蘭式即字首表示式。

#include

//提供atof()函式

#include

#include

double

exp()}

intmain()

```

波蘭式和逆波蘭式

字首 中綴 字尾表示式是對表示式的不同記法,其區別在於運算子相對於運算元的位置不同,字首表示式的運算子位於運算元之前.中綴和字尾同理 雖然人的大腦很容易理解與分析中綴表示式,但對計算機來說中綴表示式卻是很複雜的,因此計算表示式的值時,通常需要先將中綴表示式轉換為字首或字尾表示式,然後再進行求值。對計...

字尾式 逆波蘭式

逆波蘭式 是波蘭邏輯學家盧卡西維奇 lukasiewicz 發明的一種表示 表示式的方法。這種表示方式把運算子寫在運算物件的後面,例如,把a b寫成ab 所以也稱為字尾式。這種表示法的優點是根據運算物件和算符的出現次序進行計算,不需要使用括號,也便於用械實現求值。對於 表示式x a b c d 其字...

逆波蘭式轉換

逆波蘭式轉換 1 輸入 算術表示式 字串形式資料 2 輸出 逆波蘭式以及計算結果 轉換過程如下所示 棧底放 從左至右逐字讀取中綴式 a.當當前字元為數字時,直接輸出 b.當當前字元為 時,將其壓棧 c.當當前字元為 時,則彈出堆疊中最上的 之前的所有運算子並輸出,然後刪除堆疊中的 d.當當前字元為運...