看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《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