算術表示式求值演示
一。需求分析
1。 要求應用棧來實現表示式的分析計算( 用運算子優先法 )。
2。 以字元序列的形式從終端輸入語法正確的表示式( 本程式可以輸入浮點數作運算數
)。
3。 演示程式以計算器的模擬介面實現與使用者間的對話。
當用戶從終端輸入某一字元時
4。 程式的實現效果在附交的軟盤中。 請執行程式觀看。
二。 除錯分析
1。 由於考慮不周, 本程式快要完成時才發現由於函式呼叫太深, 無法處理好區域性變數
, 只好用了兩個全域性變數start_x和start_y( 有違初衷 ), 它們指定CALCULATOR的繪製
位置。
2。 由於庫函式getchar()和getch()的微妙的差別, 使得繪圖部份功能一度陷入混亂。
最後才得以調整。
3。 本程式的模組性有待加強。
三。 使用者手冊
1。 本程式在TURBO C 2。0下執行良好。 源程式檔案為Evaluate。
c。
2。 進入演示程式後, 顯示影象程式設計模擬的計算器模擬介面, 按鍵盤上的鍵位以達相應
的視覺效果。
3。 注意: 請不要輸入錯誤的表示式, 確定表示式只輸入一次並且正確( 還要求輸入過
程中不可以用退格符 ), 否則會產生莫明其妙的錯誤結果。
4。 本程式擴充了運算子集, 支援乘方運算子" p ", 例如輸入: 5p2+5p2# 則結果為
50。000000
支援平方運算子" ^ ", 例如輸入: 5^+5^# 則結果為50。000000
支援單目減運算子" ~ ", 例如輸入: ~4+4# 則結果為0。
000000
支援實數型別作運算量型別, 例如輸入: 3。14+3。14# 則結果為6。280000
實現了計算器的模擬介面, 如執行效果所視。
5。 附: 賦值運算子和支援變數參與運算的功能尚未加入。
四。 測試結果
具體請觀看軟盤中的源程式執行的效果。
五。 附錄
源程式主要檔案清單:
。
算術表示式求值演示
一。需求分析
1。 要求應用棧來實現表示式的分析計算( 用運算子優先法 )。
2。 以字元序列的形式從終端輸入語法正確的表示式( 本程式可以輸入浮點數作運算數
)。
3。 演示程式以計算器的模擬介面實現與使用者間的對話。
當用戶從終端輸入某一字元時
4。 程式的實現效果在附交的軟盤中。 請執行程式觀看。
二。 除錯分析
1。 由於考慮不周, 本程式快要完成時才發現由於函式呼叫太深, 無法處理好區域性變數
, 只好用了兩個全域性變數start_x和start_y( 有違初衷 ), 它們指定CALCULATOR的繪製
位置。
2。 由於庫函式getchar()和getch()的微妙的差別, 使得繪圖部份功能一度陷入混亂。
最後才得以調整。
3。 本程式的模組性有待加強。
三。 使用者手冊
1。 本程式在TURBO C 2。0下執行良好。 源程式檔案為Evaluate。
c。
2。 進入演示程式後, 顯示影象程式設計模擬的計算器模擬介面, 按鍵盤上的鍵位以達相應
的視覺效果。
3。 注意: 請不要輸入錯誤的表示式, 確定表示式只輸入一次並且正確( 還要求輸入過
程中不可以用退格符 ), 否則會產生莫明其妙的錯誤結果。
4。 本程式擴充了運算子集, 支援乘方運算子" p ", 例如輸入: 5p2+5p2# 則結果為
50。000000
支援平方運算子" ^ ", 例如輸入: 5^+5^# 則結果為50。000000
支援單目減運算子" ~ ", 例如輸入: ~4+4# 則結果為0。
000000
支援實數型別作運算量型別, 例如輸入: 3。14+3。14# 則結果為6。280000
實現了計算器的模擬介面, 如執行效果所視。
5。 附: 賦值運算子和支援變數參與運算的功能尚未加入。
四。 測試結果
具體請觀看軟盤中的源程式執行的效果。
五。 附錄
源程式主要檔案清單:
。