COJ1183 計算表示式的值

2022-03-06 20:24:17 字數 1095 閱讀 4444

給出的表示式全為合法的四則運算表示式,含括號。

每行乙個表示式,數字全為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...