表示式求值

2021-07-02 06:38:01 字數 1188 閱讀 8638

時間限制:

3000 ms  |  記憶體限制:

65535 kb

難度:4 描述

acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a+b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。

比如輸入:「1+2/4=」,程式就輸出1.50(結果保留兩位小數)

輸入第一行輸入乙個整數n,共有n組測試資料(n<10)。

每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式,每個表示式都是以「=」結束。這個表示式裡只包含+-*/與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入的運算元中不會出現負數。

資料保證除數不會為0

輸出每組都輸出該組表示式的運算結果,輸出結果保留兩位小數。

樣例輸入

2

1.000+2/4=

((1+2)*5+1)/4=

樣例輸出

1.50

4.00

/*

這個題上次搞的不夠透徹,所以重新寫了一遍。下面這個**思路簡單明瞭。

*/[cpp]view plain

copy

#include

#include

#include

#include

#include

using

namespace

std;  

double

compute(

double

a,char

op,double

b)  

}  char

precede(

char

c1,char

c2)  

if(c1==

'*'||c1==

'/')  

if(c1==

'('||c1==

'=')  

}  int

main()  

if(flag)  

switch

(precede(ch.top(),a[i]))  

}  printf("%.2lf\n"

,num.top());  

}  return

0;  

}  

表示式求值

程式的說明見清華大學出版社 資料結構 c語言版 include include define stack init size 40 define stackincrement 20 define ok 1 define false 0 typedef structs stack typedef st...

表示式求值

既然是表示式求值,自然需要在記憶體中儲存計算結果以及中間值。在 用c語言寫直譯器 一 中提過 變數要求是若型別,而 c 語言中的 view plaincopy to clipboardprint?in basic io.h define memery size 26 typedef enum var...

表示式求值

寫了乙個下午,各種糾結,各種問,終於搞明白了。但是自己還是想出來的一點東西的。很爽歪歪的,哈哈。先貼第一次的 include include include include include includeusing namespace std char data 7 7 int sign char ...