中綴表示式轉字尾表示式之多項式計算器

2022-03-25 20:56:42 字數 1060 閱讀 3745

要求:1. 可以計算多位整數。比如2就是個位整數,234就是多位整數。

2. 滿足帶括號的要求

#include

#define max 50

int level(char p) //規定運算子優先順序

return temp ;

}void cal(int number ,int *numbertop ,char symbol ,int *symboltop) //從字元棧中取出乙個字元,從數值棧中取出兩個數值進行運算

(*numbertop)++; //易錯點!!!!!必須加括號!!!!!!

number[*numbertop]=temp ;

}int fun(char str)

number[++numbertop]=y ; //入棧數值

} else

if((str[i] > '9' || str[i] < '0') && str[i] != '(' && str[i] != ')' )

else

if(str[i] == '(')

else

if(str[i] == ')')

symboltop--; //將左括號覆蓋掉

i++;

}// 將symbol 棧檢查一下,返回number 的棧頂,結束

}while(symbol[symboltop] != '@')

return number[numbertop];

}int main(void)

執行截圖:

為什麼是 (*numbertop)++,而不*numbertop++?

解答:因為我們需要在函式cal 中改變numbertop的值(讓它減一),所以我給他傳入了他的指標。那麼如何在呼叫的函式中讓他減一吶?查閱 ++ 的運算優先順序是要高於 * 的優先順序的,而我們的目的是改變它在原函式中的值,那麼我們就得先用括號把(*numbertop)括起來,再給它減一!!!!

中綴表示式轉字尾表示式之多項式計算器

要求 1.可以計算多位整數。比如2就是個位整數,234就是多位整數。2.滿足帶括號的要求 include define max 50 int level char p 規定運算子優先順序 return temp void cal int number int numbertop char symbo...

中綴表示式轉字尾表示式

using system using system.collections.generic using system.text namespace 中綴表示式轉字尾表示式 class convert public void run top break case case while top 1 st...

中綴表示式轉字尾表示式

將乙個普通的中綴表示式轉換為字尾表示式的一般演算法是 首先需要分配2個棧,乙個作為臨時儲存運算子的棧s1 含乙個結束符號 乙個作為輸入字尾表示式的棧s2 空棧 s1棧可先放入優先順序最低的運算子 注意,中綴式應以此最低優先順序的運算子結束。可指定其他字元,不一定非 不可。從中綴式的左端開始取字元,逐...