台灣最大程式設計社群網站
線上人數
991
 
會員總數:245119
討論主題:189029
歡迎您免費加入會員
討論區列表 >> C/C++ >> 如何用C++编写一个智能计算器?
[]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
如何用C++编写一个智能计算器?
價值 : 100 QP  點閱數:1879 回應數:3

樓主

文枢迩
門外漢
0 3
34 6
發送站內信

要求如下:
1,输入格式 4+5+6*5/5.0+(4+6*4)+4, 回车后,输出结果。
2,要考虑运算优先级
3,判断输入的符号和数字是否为正确的字符(这个可能难了,可以先不考虑)

就先这些吧∼
等着回答啊∼
主要算法告诉就可以了

本篇文章發表於2005-05-08 17:38
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

神來之筆
捐贈 VP 給 神來之筆 檢舉此回應
用前置或後置法, 一般的資料結構書上有
本篇文章回覆於2005-05-09 13:12
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
回應

小白
捐贈 VP 給 Marcus 檢舉此回應
假設我要計算 5+3*9-8/2

堆疊       算式
         5+3*9-8/2
5        +3*9-8/2
5+       3*9-8/2  (遇到加號,不是最高運算優先,先不理會)
5+3      *9-8/2   (遇到乘號,是最高運算優先,先計算再加進堆疊)
5+27     -8/2
5+27-    8/2
5+27-8   /2
5+27-4   ---    (確保堆疊中的東西的運算符優先次序相同,因此順序計算)
32-4     ---
28       ---

這個方法應該跟一般的書籍的說法有小許出入,因此一般做法是先轉成後置算式再運算,這個我並沒有直接轉換。
本篇文章回覆於2005-05-15 00:44
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

流沙
捐贈 VP 給 流沙流ㄚ流 檢舉此回應
另一個簡單的思考
請參考計算機memery, MR, M+, M-的使用方法
括號使用遞迴即可
基本上一次I/O可以處理完畢
錯誤判斷方面
1.無定義之符號
2.除以0
3.小數點規則
4.(, ) 匹配 -->這個可以考慮獨立檢查會比較好寫
本篇文章回覆於2005-05-26 00:17
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
   
1

回覆
如要回應,請先登入.