逆波蘭運算器浮點求值 c 版本

2021-07-05 08:16:05 字數 1911 閱讀 1850

/*----------浮點求值運算器-----------*/

/*-------框架--------*/

/*1.判斷匹配

a.搞個臨時棧tmps存所有()

b.判斷tmps的匹配

遇到(進

遇到)若空,則假

若非空,即是(,則彈(;ch++

返回tmps空即是匹配真

2.總函式

1.若數字則s++,並後續,轉double,push

2.若字元switch優先順序,分別處理

a.<,push

b.=,pop,s++

c,>,雙目運算,push

*/#ifndef calculator_of_double_

#define calculator_of_double_

#includeusing namespace std;

class calculatorod;

#endif // !calculator_of_double_

#include"calculator_of_double.h"

#include#include#include#include#include#includecalculatorod::calculatorod(const char *chptr)

bool calculatorod::judgemarray()

} return tmps.empty();

}void calculatorod::calculat()

break;}}

while (isdigit(exparray[i]) || exparray[i] == '.')

}} int ival = 5;

printf("求得的結果是:%15.8lf\n\n", tmpdoubs.top());

}char calculatorod::orderbetween(char chstack, char chnew);

char chs = chstack;//'(';//----棧

char chcur = chnew;// ')';//----當前

int x, y;

for (int i = 0; i <= 9; i++)

if (symbolsheet[i][9] == chs)

for (int i = 0; i <= 9; i++)

if (symbolsheet[0][i] == chcur)

/*cout << endl << x << ',' << y << endl;

cout << symbolsheet[x][y] << endl;*/ //----測試用

return symbolsheet[x][y];

}double calculatorod::getresult(double d2, char syb, double d1)

return 0;//----無意義的,防止編譯警告無全部return

}int calculatorod::factorial(int ival)

#include#include"calculator_of_double.h"

#includeusing namespace std;

int main()/*--------以下可實現---------

"32^(1/5)^(1/2)" 得到1.41

"(1+2^3!-4)*(5!-(6-(7-(89-0!))))" 得到2013

"32.1^(1/5.09)^(1.19/2.13)" 得到1.46338

------以下風格不可實現-------

32^(-5)

-3+1

*/

php使用逆波蘭演算法實現四則運算器

逆波蘭表示法,俗稱字尾表示法。曾經被別人問過,四則運算器的實現,當時僅僅是算的兩個數的,週日研究了下四則運算表示式,看到逆波蘭演算法,從看演算法思路到實現並驗證花了近2個多小時,怕以後忘掉,所以記錄下來,放到工具包中。逆波蘭演算法思路,重點是理解大括號的壓棧和出棧,這裡就不細說了。有個部落格寫的不錯...

C 逆波蘭計算器程式

在逆波蘭表示法中,所有運算子都跟在運算元的後面。比如,下列中綴表示式 1 2 4 5 採用逆波蘭表示法表示為 1 2 4 5 while 下乙個運算子或運算元不是檔案結束指示符 if 是數 將該數壓入到棧中 else if 是運算子 彈出所需數目的運算元執行運算 將結果壓入到棧中 else if 是...

C 四則運算器

leetcode上的題,只有 空格,計算所給表示式的數值 我現在用的辦法是 中綴表示式轉字尾表示式,然後計算 但是leetcode最後乙個示例是長度為20w的表示式,直接給我弄超時了,先把 放在這裡吧 計算器 include include include includeusing namespac...