作者suhorng ( )
看板C_and_CPP
標題Re: [問題]請教如何在C++加入指數及三角函數四則運算
時間Sun Mar 17 09:20:25 2019
※ 引述《magicianhong (洪生胖胖)》之銘言:
: 開發平台(Platform): Win7
: 編譯器:DevC++
: 問題(Question):目前有在學習程式語言但還是算是個菜鳥 有自己寫出一個
: 無任何函數的普通四則運算 現在想加入指數 對數 跟三角函數的四則運算
: 卻不知道如何下手 不是無法編譯就是不知道該如何引入函數 因此想請教各位高手
: 如何在小弟寫好的程式中直接做加入的動作讓編譯好的程式能夠運行 指數 對數及
: 三角函數的運算
: 程式碼(Code):https://ideone.com/EiR1uC
: 補充說明(Supplement):希望有高人能修改給小弟看感激不盡
方法很多
不管怎麼樣你都要先想好語法
有了新的語法才能改程式讀輸入 然後呼叫內建的 pow log sin cos
意思就是 expr --> 後面那串 新加了 expr expr 跟 x
https://ideone.com/BcpqbK
這是一個我喜歡的改法 (不完全不過意思有到一點)
用兩個相鄰的 expr 當函數呼叫
加入 id 的語法讓程式處理 "變數"
因為看不太懂原本程式怎麼跑的所以我直接在 calculate() 裡面判
是不是已經有兩個 expr 而且第一個 expr 是函數
是的話就函數呼叫
用法例如
$ ./a.out
Please keyin expression to be evaluated
warning: this program uses gets(), which is unsafe.
sin(31415 / 10000)
The result is 9.26536e-05
Continue (y/n) ? y
sin(31415 / 10000 / 2)
Please keyin expression to be evaluated
The result is 1
Continue (y/n) ? y
(pow 3 5)
Please keyin expression to be evaluated
The result is 243
Continue (y/n) ? n
裡面示範了兩個函數 sin 是單變數函數 push_sin 裡直接算
pow 是雙變數函數 所以 push_pow 把第一個變數先存起來叫 base
等到拿到第二個變數
在 push_pow_has_base 裡再把 base 讀出來計算 pow
因為有點懶所以新加的程式忽略了錯誤處理
然後如果改一改把 expression() 跟 var() 也都拿 env 進去的話
應該可以支援使用者自訂函數
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.30.32
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1552785632.A.AD1.html
推 lc85301: 跪了 03/17 19:03
→ magicianhong: 非常感謝大大回覆 03/17 20:56
推 CoNsTaR: PLT 版板主大大出沒 C 版 03/18 13:10
→ suhorng: 別 我只是因為 PLT 沒版主防被廢板去申請qq 03/18 13:23