-
前幾天寫過這個,6-1簡單計算器 (20).
期。 400 ms
記憶體限制。 32000 kb
**長度限制。
8000 b
判決程式。 standard
作者:張彤宇(浙江大學)。
模擬簡單運算器的工作。 假設計算器只能進行加、減、乘、除,運算數和結果都是整數,4個運算子優先順序相同,按從左到右的順序計算。
輸入格式:輸入在一行中給出乙個四規則操作方程,沒有空格,至少有乙個運算元。 如果遇到等號“=”,則輸入結束。
輸出格式:將方程結果輸出在一行中,或者如果除法分母為0或存在非法運算子,則輸出錯誤資訊“error”。 輸入示例:
示例輸出:包括
#include
int main()
sum/=i;
elsescanf("%c",&j);
printf("%d",sum);
end:return 0;}
-
所謂字尾表示式,就是把乙個@b寫成乙個b@其中前者是我們日常生活中的中綴表示式,後跟乙個字尾表示式。
例如,7*8 變為 7 8*
例如,6-9 變成 6 9-
例如,5*(3+2),字尾表示式是 5 3 2+,以知道字尾表示式沒有括號。
然後依次掃瞄符號,數字會直接進入堆疊,當遇到運算元時,前兩個數字會出堆,操作後結果會放入堆疊:
例如,5、3、2+
掃瞄 5 – > 5
掃瞄 3 – > 5 3
掃瞄 2 – > 5 3 2
掃瞄 5 – > 5
掃瞄*-25
所以你現在要解決的問題是如何將中綴表示式轉換為字尾表示式。
同樣,這是通過堆疊完成的。
從左到右掃瞄,遇到數字直接輸出,遇到優先順序堆疊或輸出的符號比較(高優先順序堆疊,小或相等的直接輸出。 左括號的優先順序大於乘法,除法大於加減法),左括號將進入堆疊,右括號將輸出堆疊中左括號中的所有符號,最後輸出堆疊中的所有符號。
例如,5、3、2+
掃瞄 5 直接輸出。
掃瞄 * 進入堆疊(堆疊內:*)。
掃瞄 ( 堆疊 (現場:*.)
掃瞄 3 直接輸出。
scan++ 的優先順序小於 (, 進入堆疊的優先順序, (in-stack: *scan2 direct output.
Scan) 掃瞄工作站中的所有輸出(之前,即輸出被 + 掃瞄到最後,堆疊中的所有東西都被輸出,即輸出被 *求和,輸出為 5 3 2 +
您可以看到此鏈結。
這也是我的。
-
你好!! 這是效果嗎,滿意了,加點多點,給你發私信。
PS2模擬器不支援以下顯示卡,如x800、r9800等,directx是顯示卡驅動的補丁,將壓縮包的所有內容複製到C:Windows System32! >>>More
你怎麼知道排卵的預產期?
至於如何計算排卵預產期的問題,其實如果我們把排卵日看作是受精日,那麼從排卵日算起,大約38周,也就是大約266天就是準媽媽的預產期。 當然,預產期只是乙個近似的估計,並不意味著準媽媽會在預產期進入分娩。 >>>More