時間限制:
3000 ms | 記憶體限制:65535 kb
難度:3 描述
dr.kong設計的機械人卡多掌握了加減法運算以後,最近又學會了一些簡單的函式求值,比如,它知道函式min(20,23)的值是20 ,add(10,98) 的值是108等等。經過訓練,dr.kong設計的機械人卡多甚至會計算一種巢狀的更複雜的表示式。
假設表示式可以簡單定義為:
1. 乙個正的十進位制數 x 是乙個表示式。
2. 如果 x 和 y 是 表示式,則 函式min(x,y )也是表示式,其值為x,y 中的最小數。
3. 如果 x 和 y 是 表示式,則 函式max(x,y )也是表示式,其值為x,y 中的最大數。
4.如果 x 和 y 是 表示式,則 函式add(x,y )也是表示式,其值為x,y 之和。
例如, 表示式 max(add(1,2),7) 的值為 7。
請你編寫程式,對於給定的一組表示式,幫助 dr.kong 算出正確答案,以便校對卡多計算的正誤。輸入
第一行: n 表示要計算的表示式個數 (1≤ n ≤ 10)
接下來有n行, 每行是乙個字串,表示待求值的表示式
(表示式中不會有多餘的空格,每行不超過300個字元,表示式中出現的十進位制數都不
超過1000。)
輸出輸出有n行,每一行對應乙個表示式的值。
樣例輸入
3add(1,2)
max(1,999)
add(min(1,1000),add(100,99))
樣例輸出
3999200
【**】
1 #include2 #include3 #include4 #include5 #include6
using
namespace std;
78 stack s;910
int min(int p,int q)
1516
int max(int p,int q)
2122
int add(int p,int q)
2526
void reverse(char a)
33int main()
46for(int i = strlen(a) - 1; i >= 3;i--)
56if(a[i] == '(')
65 }
66 }
67 printf("
%d\n
",s.top());
68 }
69return
0;70 }
【總結】
字串轉為雙精度數值:
1//語法:
2 #include 3
double atof( const
char *str );4//
功能:將字串str轉換成乙個雙精度數值並返回結果。引數str必須以有效數字開頭,但是允許以「e」或「e」除外的任意非數字字元結尾。例如:5//
x = atof( "42.0is_the_answer" );6//
x的值為42.0.
const:
關鍵字const用來告訴編譯器乙個一旦被初始化過的變數就不能再修改
const int a=5; 與 int const a=5; 等同
類名 const 物件名 與const 類名 物件名 等同
NYOJ 35 表示式求值(棧)
表示式求值 時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩...
NYOJ 35 表示式求值 簡單棧練習
時間限制 3000 ms 記憶體限制 65535 kb 難度 3 描述 dr.kong設計的機械人卡多掌握了加減法運算以後,最近又學會了一些簡單的函式求值,比如,它知道函式min 20,23 的值是20 add 10,98 的值是108等等。經過訓練,dr.kong設計的機械人卡多甚至會計算一種巢狀...
NYOJ35 表示式求值
搞了差不多2天,原來乙個是sstream的用法困惑好久,需要對陣列清零 include include include include include include includeusing namespace std char mid 1008 post 1008 char compare ch...