給出的表示式全為合法的四則運算表示式,含括號。
每行乙個表示式,數字全為int型整數,長度不超過100字元
輸出表示式的值,一律保留小數點後4位。
11+2
-1+2
-1+(-2)
1.0000
3.0000
1.0000
-3.0000
**寫得很混亂……
對於括號的處理,我用的是遞迴呼叫,對於運算子的優先順序的處理,我是通過2遍掃瞄來完成的,第一遍計算乘除運算,第二遍計算加減運算。
view code
#include #include#define n 101
struct
node
;char
s[n];
intn;
double
num[n];
char
opt[n];
inttop_num,top_opt;
double cal(int,int
);void
delspace()
s[n]=0;}
bool isdigital(char
c)node firstnum(
int a,int
b) ret.ans=cal(a+1,i-1
); ret.k=i+1
;
return
ret;
}if(isdigital(s[a]))
if(s[a]=='
+') return firstnum(a+1
,b);
if(s[a]=='-'
)
}double cmpute(double a,double b,charc)}
double cal(int a,int
b)
for(int i=0;i0]=cmpute(num[0],num[i+1
],opt[i]);
return num[0];}
intmain()
return0;
}
計算表示式值
試題描述 字尾表示式是指運算子放在兩個運算物件之後,所有計算按運算子出現的順序,嚴格地從左到右進行。注意每個運算元之後都緊跟著乙個 如 3 5 2 7對應的字尾表示式為3.5.2.7.輸入乙個字尾表示式,求表示式的值。注意本題中只出現 三種運算子。輸入一行,乙個字尾表示式。輸出一行,乙個整數,表示字...
計算表示式值(字尾表示式) 棧
處理表示式主要是對優先順序以及括號的判斷 1.運算子棧頂的優先順序小於加入的時,需要將所有的不評級的取出並計算,2.當遇到 時,需要括號內的運算全部處理 2.其他情況全部加入運算子棧和資料棧 include include include using namespace std typedef lo...
計算該表示式值
問題描述 輸入乙個只包含個位數字的簡單四則運算表示式字串,計算該表示式的值注 1 表示式只含 四則運算符,不含括號 2 表示式數值只包含個位整數 0 9 且不會出現0作為除數的情況 3 要考慮加減乘除按通常四則運算規定的計算優先順序 4 除法用整數除法,即僅保留除法運算結果的整數部分。比如8 3 2...