會員 ![]() | 【求助】C語言,字串→運算 小弟是剛學C語言的人 最近小弟遇到一個問題 如果知道使用者輸入的是一個運算式(字串) 而且知道裡面也一定只有數字、+-*/、() 而且一定算得出結果 那要如何才能算出結果 就好像 printf("%d",運算式); 這樣 不過小弟當然知道是不可能啦 目前想到的方法是把最裡面的括號分離出來 然後把分離出來的算式按分成要最先算的兩個 然後算出那兩個之後把它取代回去 就這樣一直做到只剩一個數 因為小弟知道這個方法很笨,而且也很難.... 不知道是否有更簡單的方法? 請高手指教 |
回覆 |
會員 ![]() | 數學四則運算喔 要先知道中序式,後序式之類的 一般而言我們用的是前者,電腦用的是後者 所以要先轉換,然後才能算 寫出來有點多.... 翻翻關於演算法的書吧,都會有寫 |
回覆 |
尋夢園 ![]() | 能不能舉個例子呢 光聽你的描述很難理解你所想要表達的 |
回覆 |
拉登長官 | 引用:
printf( "Result = %d", ??? ); 這種東西用 Lex/Yacc 寫是最快的.. ![]() | |
回覆 |
會員 ![]() | 我有個想法 可以用isdigit先判斷 用atoi轉成數字 數字前後沒有碰到*/或()的先運算 然後再作有碰到的 只是想法而已 coding還是自己來吧 |
回覆 |
還沒想到新的 | 消音 |
回覆 |
會員 ![]() | 先去研究一下 stack 跟 queue 吧,同時了解一下後序式的算法。 |
回覆 |
會員 ![]() | 這樣的問題,如果要自己來寫除了要懂字串的判斷. 最重要是一定要把原來的中序運算式轉成後序運算式, 之前的版上有人討論過相關問題 http://www.pczone.com.tw/vbb3/showthread.php?t=104158 簡單來說 中序式 3 + 5 前序式 + 3 5 後序式 3 5 + 前序式 後序式都不須有括號存在而且不須注運算順序,所以在電腦中運算比中序式方便. |
回覆 |
會員 ![]() | 引用:
今天爬文的時候,也有發現這一篇文章 可是因為程度的關係.... 只能勉強看得懂 目前是覺得 光是判斷從中序變成前or後序就很困難了 而直接用人類的邏去計算的話 方法又太過繁雜 不知道要怎麼下手 所以想看看有沒有比較快的方法可以像直接做出來的方法 就好像之前大大所說的 字串"5+6*8-16+(-6)" 要算出結果 可以直接變成像printf("%d",5+6*8-16+(-6)) 一樣直覺又快速的方法 不過看來 好像是真的沒有 不過還是感謝各位大大的回應^^ 小弟會努力的搞懂那個結構的^^||||←好難呀^^||| | |
回覆 |
會員 ![]() | 引用:
小弟不知道什麼是Lex/Yacc 也不知道怎麼用 稍稍查了一下 好像是一個編譯器還是一個工具? 不過還是謝謝大大提供一個好用的方法 小弟有空的時候會去研究一番 當然也希望大大不吝指教,謝謝^^ | |
回覆 |
XML | RSS 2.0 | RSS |
本論壇所有文章僅代表留言者個人意見,並不代表本站之立場,討論區以「即時留言」方式運作,故無法完全監察所有即時留言,若您發現文章可能有異議,請 email :[email protected] 處理。