因為精度問題,請使用double存資料。
要求建立棧類,採用陣列描述;
計算數學表示式的值。 輸入數學表示式,輸出表示式的計算結果。數學表示式由單個數字和運算子+、-、、/、(、)構成,例如 2+3(4+5)–6/4。假定表示式輸入格式合法。
格式輸入
第一行乙個整數n(1<=n<=100),代表表示式的個數。
接下來n行,每行乙個表示式,保證表示式內的數字為單個整數,表示式內各運算子和數字間沒有空格,且表示式的長度不超過2000。
輸出每行表示式輸出乙個浮點數,要求保留兩位小數,保證輸入表示式合法。
樣例輸入
31+6/17+214+9/1+209+9+7/(95)-16-08-7-92+6-(0-5-28-7-95(6-5526-2-7-5+67+69-100+30+2/1-6/6+5))
0-4-1/6*(1-(6/7)-4+6+2+61)-17+2-82+0-(4+6-61+(3-86/4-6-5)6/4/8+7-14/95)-0/6+1-0-2+7-2+64-36+2/8+6+162
5-39+5/15-9+18-6-8-41+5-2+9/32-2/5/(2-6)2/7-90-2+4/6678-8-86+89*(3+01/5/278+0-88-5+8/5*2-0)
輸出-9197.84
-3.47
-4362.57
限制1s, 65536kib for each test case.
#include
#include
#include
#include
using
namespace std;
//定義乙個陣列棧
template
<
class
t>
class
arraystack
//析構函式
bool
empty()
const
intsize()
const
t&top(
)void
pop(
)void
push
(const t& theelement)
;private
:int stacktop;
int stacklength;
t *stack;};
//建構函式
template
<
class
t>
arraystack
::arraystack
(int initialcapacity)
template
<
class
t>
void arraystack
::push
(const t& theelement)
delete stack;
stack=newstack;
} stack[
++stacktop]
=theelement;
}void
calculate
(arraystack<
double
>
&n, arraystack<
char
>
&c) c.
pop();
//將運算完的符號彈出棧
}void
operate
(string s,
int length)
if(flag)
n.push
(k);
}else
switch
(s[i]
)break
;case
'*':
case
'/':
if(c.
empty()
||c.
top()==
'(') c.
push
(s[i]);
else
if(c.
top()==
'+'||c.
top()==
'-') c.
push
(s[i]);
else
if(c.
top()==
'*'||c.
top()==
'/')
break
;case
'(':
//左括號直接入棧
c.push
(s[i]);
break
;case
')':
//遇到右括號 ,對括號內運算直至運算到左括號
while
(c.top()
!='('
) c.
pop();
//將左括號彈出棧
break
;default
:break;}
}}while
(!c.
empty()
)calculate
(n,c)
; cout<<
setprecision(2
)
)<}int
main()
return0;
}
資料結構實驗(6)
ps 僅資料結構實驗記錄 題目 某汽車輪渡口,過江渡船每次能載 10 輛車過江。過江車輛分別為客車類和貨車類,上船有如下規定 同類車先到先上船,客車先於貨車上渡船,且每上 4 輛客 車,才允許上一輛貨車 若等待客車不足 4 輛則以貨車代替 若無貨車等待則允許客 車都上船。設計乙個演算法模擬渡口管理。...
資料結構實驗6
題目 某汽車輪渡口,過江渡船每次能載 10 輛車過江。過江車輛分別為客車類和 貨車類,上船有如下規定 同類車先到先上船,客車先於貨車上渡船,且每上 4 輛客 車,才允許上一輛貨車 若等待客車不足 4 輛則以貨車代替 若無貨車等待則允許客 車都上船。設計乙個演算法模擬渡口管理。test.h inclu...
資料結構實驗6 樹
編寫演算法函式void levelorder tree t 實現樹的層次遍歷。include tree.h void levelorder tree t t為指向樹根結點的指標 int main 假設樹採用指標方式的孩子表示法表示,試編寫乙個非遞迴函式void preorder1 tree root...