【計算機演算法】 求字首表示式的值
【計算機演算法】 求字首表示式的值
算術表示式有字首表示法、中綴表示法和字尾表示法等形式。字首表示式指二元運算子位於兩個運算數之前,例如2+3*(7-4)+8/4的字首表示式是:+ + 2 * 3 - 7 4 / 8 4。請設計程式計算字首表示式的結果值。
輸入格式:
輸入在一行內給出不超過30個字元的字首表示式,只包含+、-、*、/以及運算數,不同物件(運算數、運算子號)之間以空格分隔。
輸出格式:
輸出字首表示式的運算結果,保留小數點後1位,或錯誤資訊ERROR。
輸入樣例:
+ + 2 * 3 - 7 4 / 8 4
輸出樣例:
13.0
程式碼:
#include <iostream>
#include <cstdio>
#include <string>
#include <stack>
#include <stdlib.h>
using namespace std;
int main()
{
stack <double> q;
string a[30]; //存字元
bool error = 0; //錯誤資訊
int n = 0; //字元個數
while(cin>>a[n++])//讀到檔案結尾自動結束
{
}
n=n-1;//n是個數,需要減一
for(int i = n-1; i>=0; i--)
{
///如果是符號
if(a[i].length() == 1 && (a[i][0]== '+' || a[i][0]=='-' || a[i][0]=='*' || a[i][0]=='/'))
{
if(q.size()<2)
{
error = 1;
break;
}
double aa = q.top();
q.pop();
double bb = q.top();
q.pop();
if(a[i][0]== '+')
q.push(aa+bb);
else
if(a[i][0]== '-')
q.push(aa-bb);
else
if(a[i][0]== '*')
q.push((aa*bb));
else if(a[i][0]== '/')
{
if(bb==0)
{
error = 1; break;
}
q.push(aa/bb);
}
}
else
{
double x = atof(a[i].c_str()); //c_str() 函式是轉化為字元陣列;atof() 是c中將字元陣列轉化為浮點型資料函式
q.push(x);
}
}
if(error)
printf("ERROR\n");
else
printf("%.1f\n",q.top());
return 0;
}
相關文章
- NYOJ--字首式計算
- 33:計算分數加減表示式的值
- 算術表示式的字首式、中綴式、字尾式相互轉換
- 演算法訓練 字首表示式 (藍橋杯)演算法
- 計算機演算法:資料壓縮之字首編碼(5)計算機演算法
- Java計算器(使用逆波蘭表示式演算法)Java演算法
- 【資料結構與演算法】中綴表示式轉字尾表示式以及字尾表示式的計算資料結構演算法
- 計算機資料的表示計算機
- 計算中綴表示式
- 表示式計算(棧的應用)
- 計算機程式的思維邏輯 (91) - Lambda表示式計算機
- 計算出用字串表示的數學表示式的值 (轉)字串
- 計算機程式的思維邏輯 (90) - 正規表示式 (下 - 剖析常見表示式)計算機
- 演算法~簡單的計算器(驗證數學表示式是否合法~“狀態機思想”)演算法
- 表示式計算 用棧完成
- 一個數學表示式的計算
- PG 中表示式的計算順序
- 36:計算多項式的值
- 計算機組成與體系結構-數值表示範圍-浮點數計算計算機
- 將算數表示式轉換成字尾表示式並計算結果
- 計算機程式的思維邏輯 (88) – 正規表示式 (上)計算機
- 計算機程式的思維邏輯 (88) - 正規表示式 (上)計算機
- 計算機中數值和字串怎麼用二進位制表示?計算機字串
- python--表示式(運算表示式)Python
- 計算機演算法計算機演算法
- 表示式編譯計算器(下) (轉)編譯
- 圖解計算機中的資料表示形式圖解計算機
- 浮點數在計算機底層的表示及運算計算機
- C#資料結構與演算法系列(十):逆波蘭計算器——逆波蘭表示式(字尾表示式)C#資料結構演算法
- 計算PI值到一億位的演算法 (轉)演算法
- 使用棧結構計算中綴表示式
- 表示式計算原始碼JAVA實現 (轉)原始碼Java
- 【演算法】E.W.Dijkstra算術表示式求值演算法
- 計算機系統002 – 數值運算計算機
- 計算機系統002 - 數值運算計算機
- 2. 計算機怎麼表示數字計算機
- 我就給一個PHP逆波蘭表示式的演算法吧---工資計算專用PHP演算法
- C#字尾表示式解析計算字串公式C#字串公式