描述
acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a+b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。
比如輸入:「1+2/4=」,程式就輸出1.50(結果保留兩位小數) 輸入
第一行輸入乙個整數n,共有n組測試資料(n<10)。
每組測試資料只有一行,是乙個長度不超過1000的字串,表示這個表示式,每個表示式都是以「=」結束。這個表示式裡只包含+-*/與小括號這幾種符號。其中小括號可以巢狀使用。資料保證輸入的運算元中不會出現負數。
資料保證除數不會為0
輸出每組都輸出該組表示式的運算結果,輸出結果保留兩位小數。
樣例輸入
21.000+2/4=
((1+2)*5+1)/4=
樣例輸出
1.504.00
在做這道題之前,可以先做「中綴式轉字尾式」,處理方法十分相似,只是多了運算。。。(這裡我是用陣列解決的!)
#include#includedouble cal(double a, int c, double b)return result;
}int main()
}else
case '(':
if(str[i] != ')' && str[i] != '=')
b[numb++] = str[i];
else
numb--;
break;
case '*':
case '/':
ch = b[numb - 1];
if(ch == '*' || ch == '/')
else
b[numb++] = str[i];}}
}printf("%.2lf\n", a[0]);
n--;
}return 0;
}
NYOJ35 表示式求值
搞了差不多2天,原來乙個是sstream的用法困惑好久,需要對陣列清零 include include include include include include includeusing namespace std char mid 1008 post 1008 char compare ch...
NYOJ 35 表示式求值
表示式分為字首表示式,中綴表示式,字尾表示式,對於不涉及運算子優先順序的用中綴表示式直接做比較方便,如果涉及到的優先順序的把中綴表示式轉化成字首或字尾表示式比較方便。本體我用的是字首表示式解題。include include include include includeusing namespac...
NYoj35 表示式求值
時間限制 3000 ms 記憶體限制 65535 kb 難度 4 描述 acm隊的mdd想做乙個計算器,但是,他要做的不僅僅是一計算乙個a b的計算器,他想實現隨便輸入乙個表示式都能求出它的值的計算器,現在請你幫助他來實現這個計算器吧。比如輸入 1 2 4 程式就輸出1.50 結果保留兩位小數 輸入...