中綴表示式求值

2021-08-10 16:57:32 字數 2621 閱讀 4580

#include

#define maxsize 100                   //可以用中綴表示式求值

using namespace std;                   //計算整數範圍的表示式的值,值的範圍不侷限於0到79

typedef  struct

sqstack;

void initstock(sqstack &s)      //構造空棧

char  gettop(sqstack s)          //返回s的棧頂元素

void push(sqstack &s,char e)        //插入e為新的棧頂元素

else

}

void pop(sqstack &s,char &e)        //將棧頂元素彈出

}

int  in(char  d)//判斷是否為運算子,是則返回1

}

char precede(char f,char g) //比較兩個運算子的優先順序

int ads(int a,char th,int b)//計算兩個數關於算符th的值

return 0;

}

int  charint(sqstack &opnd,char a)//多個字元數字轉換成乙個整數

for(k=i-1;k>=0;k--)

delete q;

return g;

}

void intchar(sqstack &opnd,int j)//將乙個整數轉換成多個字元

for(k=i-1;k>=0;k--)                        //將各個位的字元分別壓入棧中

push(opnd,'#');                        //'#'作為整數j的結尾,以便將字串的j轉換成整數

delete a;

}

int    value(char  *q)                        //求表示式的值得函式

push(opnd,'#');

}

switch(precede(gettop(optr),*t))   //precede(char ,char)函式是比較兩個算符的運算優先順序

else

break;

case  '=' :

char e;

pop(optr, e);

t++;

break;

}

}

char s;

pop(opnd,s);

cout<

delete opnd.base;

delete optr.base;

return 0;

}

int main()

中綴表示式求值

中綴表示式用於計算乙個表示式,比如計算器 就是這樣實現的 這兒是用棧的資料結構來實現的。首先輸入乙個字串,表示乙個表示式,然後用乙個棧儲存數字,另外乙個棧儲存符號 如果當前運算子優先順序比棧頂元素優先順序高,則入棧,若當前運算子優先順序小於等於棧頂運算子優先順序,則從數字棧中彈出兩個元素,從符號棧中...

中綴表示式求值

表示式求值都需要2個棧。乙個是符號棧,另乙個是數字棧。拿上面的字尾式45 來說,咱們剛才將表示式從4 5轉換到45 的過程是咱們一眼就能看出來的,但是計算機不能像咱們這樣做,因為他不會。他只會從表示式的開頭,順序掃瞄表示式的每乙個字元,它不能像咱們一樣 一眼就 看 出來。計算機是如何轉換的呢?1.從...

中綴表示式求值

計算 calc.cpp 問題描述 小明在你的幫助下,破密了ferrari設的密碼門,正要往前走,突然又出現了乙個密碼門,門上有乙個算式,其中只有 0 9 求出的值就是密碼。小明數學學得不好,還需你幫他的忙。用整數除法 輸入 輸入檔案calc.in共1行,為乙個算式。輸出 輸出檔案calc.out共1...