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

看板C_and_CPP作者 (かおる)時間11年前 (2014/10/15 03:45), 11年前編輯推噓2(2015)
留言17則, 5人參與, 最新討論串1/1
開發平台(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 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.113.178.1 ※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1413315920.A.DE1.html

10/15 06:28, , 1F
資料結構
10/15 06:28, 1F

10/15 10:38, , 2F
請問是要用哪一種呢?><還沒有學過資料結構
10/15 10:38, 2F

10/15 13:05, , 3F
通常會用樹;但你的目的是什麼?不用計算的話全部char亦無妨
10/15 13:05, 3F
我希望是第一行是一個多項式 第二行是單一個運算元 第三行也是多項式 然後去對這兩個多項式做運算 我目前是用笨方法直接開個coef的陣列去存系數 運算都沒問題 只是現在不太知道要怎麼把input轉存到coef的陣列中 現在只有想到瘋狂if 去判斷 但是這樣感覺很不好QQ

10/15 16:33, , 4F
可以貼code上來看看
10/15 16:33, 4F
http://codepad.org/Kxs5bPhG 很新手的程式碼請大家不要介意QQ 現在是Set不知道要怎麼把輸入的字串做處理存到coef中 運算和show的部分都有測試過 ※ 編輯: amy99778 (140.113.178.1), 10/15/2014 18:06:42

10/15 21:12, , 5F
如果保證輸入一定是有效的的話會比較簡單
10/15 21:12, 5F

10/15 21:14, , 6F
先掃過整行找出最大的degree後開陣列 之後在一項一項存
10/15 21:14, 6F

10/15 21:15, , 7F
剩下的就一個一個字元處理
10/15 21:15, 7F

10/15 21:16, , 8F
判斷數字字元可以用ctype 字串轉數值可用atoi或自己寫
10/15 21:16, 8F

10/15 21:17, , 9F
可以放個狀態變數來記錄目前讀到什麼及預期讀到什麼
10/15 21:17, 9F

10/15 21:20, , 10F
P.S 以這個程式來說 我覺得用鏈結串列會比陣列好
10/15 21:20, 10F
謝謝大家幫忙輸入的地方寫出來了~ http://codepad.org/rxvmWbKo 不過再請問一下 overloading後的operator的處理順序 我在執行+ 和*之前 overloading的function好像就已經執行了@@ 所以沒有吃到第二個輸入的多項式>< ※ 編輯: amy99778 (140.113.178.1), 10/16/2014 00:40:18

10/16 01:33, , 11F
可能是cin讀取+或*後 換行字元還在 所以p2.Set()吃到沒被
10/16 01:33, 11F

10/16 01:33, , 12F
消化掉的換行了
10/16 01:33, 12F

10/16 10:38, , 13F
你的問題出在 input 沒有自己定義清楚抽象的格式
10/16 10:38, 13F

10/16 10:41, , 14F
把 Polynomial 的字串 拆開 你需要用什麼當 delimiter?
10/16 10:41, 14F

10/16 10:43, , 15F
以你的例子來說 polynomial = 以+號分隔的 term
10/16 10:43, 15F

10/16 10:43, , 16F
然後再定義什麼是一個term? 以x分隔的coeff與power
10/16 10:43, 16F

10/16 10:45, , 17F
可以參考 ebnf 或者 regular expression
10/16 10:45, 17F
文章代碼(AID): #1KFNrGtX (C_and_CPP)