題目描述:
對於乙個不存在括號的表示式進行計算
輸入:
存在多種資料,每組資料一行,表示式中數字後存在空格
輸出:
輸出結果
樣例輸入:
6 / 2 + 3 + 3 * 4樣例輸出:
18#include
#include
using namespace std;
stackop;
stackin;
char str[220];
//運算子優先順序 0+-*/ 其中0是自定義的優先順序最低的運算子
//值為1代表優先順序高
int mat[5]=;
//reto代表是運算子還是數字
//retn代表返回值 :運算子編號或者數字
//i是字串標號
void getop(bool &reto,int &retn,int &i)
if(str[i]==0)
if(str[i]>='0'&&str[i]<='9')
else
if(str[i]=='-')
if(str[i]=='*')
if(str[i]=='/')
i+=2;
//i向後移動 跨過當前運算子和空格
return;
}//擷取完整數字
retn=0;
for(;str[i]!=0&&str[i]!=' ';i++)
//如果題目說明數字後沒空格,下面跳過空格的**注釋掉即可
if(str[i]==' ')
return;
}int main()
//重置清零操作
bool retop;
int retnum;
int idx=0;
while(!op.empty())
while(!in.empty())
//開始處理
while(true)
else
else if(o==2)
else if(o==3)
else if(o==4)
in.push(result);
}op.push(retnum);}}
else
if(op.size()==2&&op.top()==0)
}printf("%.2f\n",in.top());
}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 ...