讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
輸入描述:
測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。輸出描述:
對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。示例1
1 + 24 + 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...