簡單計算器

2021-10-17 07:02:02 字數 1119 閱讀 3650

讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。

輸入描述:

測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。
輸出描述:

對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。
示例1

1 + 2

4 + 2 * 5 - 7 / 11

0

3.00

13.36

① 設立運算子和運算數兩個棧。

② 運算子棧棧底放乙個特殊運算子『#』,其優先順序最低,目的是:後續遇到的任何運算子的優先順序都比它高,能夠順利入棧;將表示式尾部新增乙個特殊運算子『$』,其優先順序次底,其目的是:當遍歷到表示式尾部時,1)若運算子棧中尚有可以運算的符號,則可以繼續進行運算,2)若運算子棧中只剩下特殊符號#,則也可保證$能夠順利入棧,並且讓程式正確地退出。

③ 從左至右依次遍歷字串,若遍歷到運算子,則將其與運算子棧的棧頂元素進行比較,若運算子棧的棧頂的優先順序小於該運算子,則將該運算子壓入運算子棧;若運算子棧的棧頂的優先順序大於該運算子,則彈出棧頂運算子,從運算數棧中依次彈出運算數,完成彈出運算子對應的運算後,再將該結果壓入運算數棧。

④ 若遍歷到表示式中的運算數,則直接壓入運算數棧。

⑤ 若運算子棧中僅剩下兩個特殊運算子『#』和'$',則表示式運算結束,此時運算數棧中唯一的數字就是表示式的值。

#include#include#include#include#includeusing namespace std;

int priority(char c)

double getnumber(string str,int& index)//將字串轉為數字

return number;

}double calculate(double x,double y,char op)

int main()

else}}

printf("%.2f\n",data.top());

}return 0;

}

簡單計算器

unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,stdctrls,buttons,math math是數 算單元 type tform1 class ...

簡單計算器

a 簡單計算器 crawling in process.crawling failed time limit 1000msmemory limit 32768kb64bit io format i64d i64u submit status description 讀入乙個只包含 的非負整數計算表示...

簡單計算器

問題描述 乙個最簡單的計算器,支援 四種運算。僅需考慮輸入輸出為整數的情況,資料和運算結果不會超過int表示的範圍。輸入 輸入只有一行,共有三個引數,其中第1 2個引數為整數,第3個引數為操作符 輸出 輸出只有一行,乙個整數,為運算結果。然而 1.如果出現除數為0的情況,則輸出 divided by...