Re: [問題] 一開始就要輸入"算式" 像1+2*3 然後輸出7
※ 引述《calqlus (東方一隻鹿)》之銘言:
: ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 )
: ( 未必需要依照此格式,文章條理清楚即可 )
: 遇到的問題: (題意請描述清楚)
: 題目有些英文看不懂
: 所以先直接原題目po網址
: http://0rz.tw/b0zBf
: 大概了解
: 會出現的運算符號有 四則運算和 表示負號的- 以及括號() 取餘數%
: 看到這題目的印象
: 就是用C++的operator
: 不過很快就發現 那些符號是要強制輸入的-.-
: 於是想到第二個 用堆疊
: 不過問題就在這了吧
: 是要怎麼樣把 像一次輸入的 789-(400+300) 好好的拆開
: 也許要先宣告字串先放再拆
: 不過我會用到strpbrk()那個函式...最近老是用它也蠻煩的
: 所以想問
: 有沒有更快 或 比較不用用到奇怪的函式的方法
: 感謝
提供一個想法,有錯請指正
用遞洄方式建一個類似下面的樹
分割順序是將四則運算的規則反過來,
'-'是減號還是負號就自己在多加點判斷
EX:(A+B)*C+D
(A+B)*C+D
/ ∣ \
(A+B)*C + D
/ ∣ \
(A+B) * C
/ ∣ \
( A+B )
/∣\
A + B
建完之後再從葉節點把值計算完後傳回上層
(這裡就知道為何分割順序與四則運算的規則相反)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.123.87.131
推
10/09 20:58, , 1F
10/09 20:58, 1F
推
10/09 21:57, , 2F
10/09 21:57, 2F
→
10/09 21:59, , 3F
10/09 21:59, 3F
→
10/09 21:59, , 4F
10/09 21:59, 4F
樹只是一種方便說明的概念 實做方式隨人
※ 編輯: tabinoyume 來自: 122.123.84.161 (10/09 22:06)
→
10/09 23:12, , 5F
10/09 23:12, 5F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):