1.讀入乙個只包含 +, -, *, / 的非負整數計算表示式,計算該表示式的值。
2.input測試輸入包含若干測試用例,每個測試用例佔一行,每行不超過200個字元,整數和運算子之間用乙個空格分隔。沒有非法表示式。當一行中只有0時輸入結束,相應的結果不要輸出。
3.output對每個測試用例輸出1行,即該表示式的值,精確到小數點後2位。
這道題的難處在於如何判斷運算的先後順序,仔細思考下我們就知道可以利用stack來儲存我們需要的數字,而運算子僅作判斷使用。
我們又知道——我們輸入的時候先 數字 再 運算子;故可用兩個while()進行輸入;(因為一開始的輸入規則和後面的規則有所區別)
講一下這道提題的難點。
1.輸入格式的把握;
兩個while(),先輸入數字 cin >> n; 在輸入運算子 c=getchar();
或利用string s; 這就需要多個if()來判斷哪些應該是整數並將其轉化為數值;(較為複雜,但在第二種方法中使用);
2.運算子的先後;
建乙個stackarray; 先壓數字 ,根據前乙個的運算子判斷——如果是「*」或 「/」則把即將壓棧的數值和棧的頂值相乘,再壓棧;
或兩個棧,乙個數值棧,乙個運算子棧,寫乙個函式compare()比較運算子大小——然後可以直接寫運算的方法,不再考慮運算先後;再乙個壓棧的方法(邊壓棧,邊計算結果);
#include #include#include
#include
#include
using
namespace
std;
stack
num;
intmain()
if(c=='/'
)
if(c=='+'
)
if(c=='-'
)
if(getchar()=='\n'
)
break
; c =getchar();
}double sum = 0
;
while(!num.empty())
printf(
"%0.2lf\n
",sum);
}return0;
}
有所鑑借;
簡易計算器
include include include char xpr expression int level char ch double calc int lim return ret int main cal的遞迴使用,利用了當 運算子運算完畢以後,仍然會留在這個位置 比如式子 3 5 2 的分析...
簡易計算器
cpp copyright c 2012,煙台大學計算機學院 all rights reserved.檔名稱 text.cpp 作 者 胡穎 完成日期 2013 年 6 月 28 日 版 本 號 v1.0 輸入描述 輸入操作指令及計算的數字 符號 問題描述 製作簡易計算器 程式輸出 輸出操作頁面及計...
簡易計算器
該程式實現了乙個簡易的四則運算計算器,功能強大之處在於輸入格式不受限制。你輸入的字串可以包含空格,也可以用括號包含優先順序。include include include include includeusing namespace std struct node string str stacks...