表示式求值

2021-06-19 22:03:33 字數 1087 閱讀 4344

//表示式求值/ 

///1、確定是標準的中綴表示式

//2、將中綴表示式轉化成字尾表示式

//3、計算字尾表示式的值/

#include

#include #include
using namespace std;

//制定運算子優先順序

int priority(char operators)

}//判斷是否為運算子

int isoperator(char ch)

} //將中綴表示式轉換成字尾表示式

void mid_to_back(string mid,char back,int& n)

else if( isoperator(mid[i]) )

opstack.push(mid[i]);//運算子入棧

} else if('(' == mid[i])

else if(')' == mid[i])

opstack.pop(); //將左括號出棧

} else

}while('#' != opstack.top()) }

double getnum(char back,int& i)

if(flag) //小數點之前

else //小數點之後

i++;

}

return (x1+x2);

}//計算字尾表示式

//字尾表示式裡只有數字、運算子、空格

double calculate(char back,int n)

else if(' ' == back[i])

else

case '-':

case '*':

case '/':

default:break;

}} } //現在棧內只有乙個數字

return restack.top(); //就是字尾表示式的值

} int main()

cout

cout

}

表示式求值

程式的說明見清華大學出版社 資料結構 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 ...