表示式求值

2021-09-10 20:07:03 字數 1330 閱讀 3918

題目描述:

對於乙個不存在括號的表示式進行計算

輸入:

存在多種資料,每組資料一行,表示式中數字後存在空格

輸出:

輸出結果

樣例輸入:

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