數字表示式求值程式 c c

2021-05-21 22:26:11 字數 1095 閱讀 6846

乙個控制台下的數字表示式求值程式 (c/c++)

源**見下:

#include

#include

#include

#include

#include

#include

using namespace std;

//設定運算子優先順序的演算法

int priority(const string opera) // 運算子優先順序

else if(opera=="*"||opera=="/")

else

}void middlefixtopostfix(vector&ivec1,vector&ivec2)

//中綴表示式到字尾表示式的轉換演算法,ivec2中存放的是中綴表示式,將其轉換為字尾表示式形式存放到ivec2中。

else if(ivec2[i]=="+"||ivec2[i]=="-"||ivec2[i]=="*"||ivec2[i]=="/")

else

operatorstk.push(ivec2[i]);

}else}}

else if(ivec2[i]==")")

operatorstk.pop();

}else

}while(operatorstk.empty()==false)

}double getpostfixexpressionvalue(vector&s)

//形參為存放字尾表示式

else if(s[i]=="-")

else if(s[i]=="*")

else if(s[i]=="/")

else

}return operand.top();

}// const int max = 20;

int main()

middlefixtopostfix(ivec,_ivec);

//字尾表示式

cout<<"字尾表示式為:";

for(vector::size_type i=0;i!=ivec.size();++i)

上面文中**經本人測試有點邏輯錯誤

錯誤發生在中綴到字尾轉換演算法上先修改如下

習題7 13 數字表示式

習題7 13 數字表示式 題意 給定乙個數字,可以在中間插入 使得式子等於2000.思路 暴力列舉,最多8個位置,每個位置有4種情況,最多4 8。可行。不過要注意題目中要按字典序輸出,還有乙個坑點,就是至少要插入乙個運算子,所以2000 是impossible。還涉及中綴表示式轉字尾表示式 incl...

表示式求值

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