表示式求值

2021-07-28 21:55:11 字數 2173 閱讀 3957

描述

假設表示式定義為:1. 乙個十進位制的正整數 x 是乙個表示式。2. 如果 x 和 y 是 表示式,則 x+y, x*y 也是表示式; *優先順序高於+.3. 如果 x 和 y 是 表示式,則 函式 smax(x,y)也是表示式,其值為:先分別求出 x ,y值的各位數字之和,再從中選最大數。4.如果 x 是 表示式,則 (x)也是表示式。例如:表示式 12*(2+3)+smax(333,220+280) 的值為 69。請你程式設計,對給定的表示式,輸出其值。  

輸入【標準輸入】 第一行: t 表示要計算的表示式個數 (1≤ t ≤ 10) 接下來有 t 行, 每行是乙個字串,表示待求的表示式,長度<=1000

輸出【標準輸出】 對於每個表示式,輸出一行,表示對應表示式的值。

樣例輸入

3

12+2*3

12*(2+3)

12*(2+3)+smax(333,220+280)

樣例輸出

18

6069

#include#include#include#includeusing namespace std; 

stack osa;

stack isa;

int main()

else if(s[i]=='s')

else if(s[i]>='0'&&s[i]<='9')

i--;

isa.push(v);

}else if(s[i]=='+')

isa.push(c);

osa.pop();

}osa.push(s[i]);

}else if(s[i]=='*')

osa.push(s[i]);

}else if(s[i]==')')

isa.push(c);

osa.pop();

}if(osa.top()=='s')

while(b)

int c=da>db?da:db;

isa.push(c);

osa.pop();

}osa.pop();

}} printf("%d\n",isa.top());

isa.pop();

} return 0;

}

描述

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

#include#include#include#include#includeusing namespace std;

int main()

i--;

if(k!=0)

v=v/pow(10,i-k);

dsta.push(v);

} else if(s[i]=='+'||s[i]=='-')

osta.pop();

dsta.push(c);

}osta.push(s[i]);

}else if(s[i]=='*'||s[i]=='/')

else if(osta.top()=='/')

}osta.push(s[i]);

}else if(s[i]==')')

osta.pop();

dsta.push(c);

}osta.pop();

}} printf("%.2lf\n",dsta.top());

dsta.pop();

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