計算器c 實現

2021-08-22 15:38:09 字數 619 閱讀 3273

1.中綴表示式轉字尾表示式

中綴:a/(b-c)+d*e

字尾: abc-/de*+

轉換步驟:

(1)從左到右掃瞄中綴表示式,遇到#轉(6);

(2)遇到運算元直接輸出;(不進棧)

(3)遇到「)」,則連續出棧輸出,直到遇到「(」為止(「(」出棧但不輸出);否則

(4)若是其它操作符,則與棧頂的操作符比較優先順序;若優先順序小於棧頂的優先順序,如a*b+c,說明*號所需的兩個數a和b已經輸出,則把*號彈出,如此反覆,直到棧外優先順序比棧內優先順序高,最後把+號進棧.若優先順序大於棧頂優先順序,如a+b*c,說明*號所需的兩個數b和c還有乙個沒有輸出,所以把*號進棧.

(5)轉(1);

(6)輸出棧中剩餘操作符(#除外)。

2.轉換的關鍵:確定操作符的優先順序

優先順序決定操作符是進棧或出棧。

操作符在棧內外的優先順序應該不同,以體現中綴表示式同優先順序操作符從左到右的計算要求。「(」的優先順序在棧外最高,但進棧後應該比除#外的操作符低,便於括號內的其它操作符進棧。

isp——棧內優先順序

icp——棧外優先順序

操作符 # ( */ +- )

icp 0 7 4 2 1

isp 0 1 5 3 7

C 實現簡單計算器

要求 輸入乙個包含 的非負整數計算表示式,計算表示式的值,每個字元之間需有乙個空格,若一行輸入為0,則退出程式。輸入樣例 4 2 5 7 11 輸出樣例 13.36 實現 include include using namespace std char str 200 儲存表示式字串 int mat...

C 實現簡易計算器

include include include define fin cin define fo using namespace std bool isoperator char x int getpriority char x bool isbracket char x int dooperate...

C 實現計算器功能

注意 判斷數值和表示式 的合理性。include include include define max len 200 判斷字元是否合理 0 9 bool checkinput char c if c 0x2e c 0x2b c 0x2d c 0x2a c 0x2f return false boo...