Openjudge 4132 四則運算表示式求值

2022-02-17 01:04:42 字數 1035 閱讀 8287

這一題我們可以通過遞迴求解,首先我們可以把乙個表示式分為三部分,分別是:

(1)表示式 :項、加減

(2)項:因子、乘除

(3)因子:數、()表示式

這三項構成了遞迴的關係,我們可以看到,要求乙個表示式的值,我們首先要求乙個項的值,要求乙個項的值,我們首先要求乙個因子的值,要求乙個因子的值,我們首先要看它是由什麼組成的。

它既可以是由表示式加上括號組成的,也可以是由數組成,當發現它是數時,我們就計算這個數的大小。

浮點數的計算我們分為兩部分,首先先算出整數部分的大小,不斷地取一位然後看看是否結束,不結束就再取一位,將之前的乘十然後加上這一位,然後我們通過cin.peek()函式可以看到這一位是什麼,如果這一位是  .   我們就開始小數部分的計算,和之前的類似,每次減小十倍而已。

如果是表示式的話,我們繼續之前的那個過程,表示式 -> 項 -> 因子 ,不斷地遞迴求解。

對於表示式的求值,我們首先求出第一項的值,看看是否有後一項,有的話我們就進行計算,沒有就結束。因為當進行之後的遞迴的時候,我們是要吃掉後面的字元的,我們使用過之後就把它丟掉。

使用完+ - * / ( ) 之後我們要把它吃掉,求項的時候我們也是相同的流程,先求一項,判斷是否還有,然後進行下一步的操作,大致就是這樣了。

#include#include#include#includeusing namespace std;

double factor();

double term();

double exp();

double exp() //求表示式的值

else break;

}return res;}

double term()

else break;

}return res;}

double factor()

else

if(c=='.') //有小數部分

res += val;}}

return res;}

int main()

指標運算四則

要是看c語言的書,上面一定會說指標運算僅對陣列有意義,這話似乎也不錯,當然如果你打算對計算機系統徹底研究就不能拘泥於陣列中的指標運算了。下面我們來看看幾個例子。定義乙個指標,然它指向記憶體中的0x10000000位置。void ptr void 0x10000000 然後對它賦值 這樣嗎?ptr 1...

C typedef使用四則

c typedef char pchar pchar a,b c typedef struct tagpoint point point p1 用 typedef 來定義與平台無關的型別。比如定義乙個叫 real 的浮點型別,在目標平台一上,讓它表示最高精度的型別為 typedef long dou...

python四則運算程式 四則運算(Python)

四則運算程式 一 資訊 二.題目要求 寫乙個能自動生成小學四則運算題目的程式,然後在此基礎上擴充套件 除了整數以外,還要支援真分數的四則運算,例如 1 6 1 8 7 24 程式要求能處理使用者的輸入,判斷對錯,累積分數 程式支援可以由使用者自行選擇加 減 乘 除運算 三 import random...