簡易計算器

2022-08-05 11:12:18 字數 1294 閱讀 8617

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...