[問題] C++讀檔的小問題

作者: amy99778 (かおる)   2014-10-15 03:45:17
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
DEV C++
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)

問題(Question):
本身對於讀input的處理不太擅長...
請問 若輸入的值
每行可能是 3x^2 + x + -3
類似的多項式
或是單一個*或+代表運算元
可能係數是1所以只有顯示x
也可能X的次方是0次 所以只有顯示係數
也可能兩者都有
需要一次讀一整行
本來想說用getline存在char陣列中
但這樣數字都變成字元散開QQ
試了滿多種方法就是找不出的方法可以把所有可能性寫進去
不知道是不是有甚麼概念或是方法可以處理類似這樣的輸入值呢?
應該不會只能暴力解吧QQ
作者: johnpage (johnpage)   2014-10-15 06:28:00
資料結構
作者: amy99778 (かおる)   2014-10-15 10:38:00
請問是要用哪一種呢?><還沒有學過資料結構
作者: dirkc (3781615)   2014-10-15 13:05:00
通常會用樹;但你的目的是什麼?不用計算的話全部char亦無妨
作者: BlazarArc (Midnight Sun)   2014-10-15 16:33:00
可以貼code上來看看
作者: remizu (remizu)   2014-10-15 21:12:00
如果保證輸入一定是有效的的話會比較簡單先掃過整行找出最大的degree後開陣列 之後在一項一項存剩下的就一個一個字元處理判斷數字字元可以用ctype 字串轉數值可用atoi或自己寫可以放個狀態變數來記錄目前讀到什麼及預期讀到什麼P.S 以這個程式來說 我覺得用鏈結串列會比陣列好可能是cin讀取+或*後 換行字元還在 所以p2.Set()吃到沒被消化掉的換行了
作者: BlazarArc (Midnight Sun)   2014-10-16 10:38:00
你的問題出在 input 沒有自己定義清楚抽象的格式把 Polynomial 的字串 拆開 你需要用什麼當 delimiter?以你的例子來說 polynomial = 以+號分隔的 term然後再定義什麼是一個term? 以x分隔的coeff與power可以參考 ebnf 或者 regular expression

Links booklink

Contact Us: admin [ a t ] ucptt.com