Re: [情報] C++大師認證

看板C_and_CPP作者 ( )時間12年前 (2013/05/25 12:05), 編輯推噓11(11010)
留言21則, 5人參與, 最新討論串27/29 (看更多)
※ 引述《yoco315 (眠月)》之銘言: : 「除了作業三以外,其他的要怎麼寫才會漂亮 XD」 : pa3: 想請問一下, pa4 pa5 (or pa6) 會用到 pa3 建出來的樹嗎 @@? 如果這棵樹以後用不到 我很想直接邊 parse 邊算... 請問這會讓以後的作業不好寫嗎? : 讀入一行,把一行轉成 vector<token> : 寫一個 recur-descent parser,parse_ctrlexpr(vector<token>) : 傳回值是 shared_ptr<ctrlexpr_node> : ctrlexpr_node 有個 virtual ctrlexpr_value evaluate() = 0; : 每個繼承者實作自己的 evaluate(),最後印出 root value 就好了。 : 後面還沒寫,我也想知道 = =|| 頁末防雷 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 118.166.46.41

05/25 20:22, , 1F
就我所知 pa3 只有用在 pa5 當中來計算 #if 的結果 所以...
05/25 20:22, 1F

05/25 20:22, , 2F
我的 pa3 其實是個滿傳統的解法就是了
05/25 20:22, 2F

05/25 20:26, , 3F
不會
05/25 20:26, 3F

05/25 20:29, , 4F
感謝! 那我就不建出來了XD 希望可以w
05/25 20:29, 4F

05/25 20:29, , 5F
想到要寫那麼多 struct 就麻煩 <囧>
05/25 20:29, 5F

05/26 00:13, , 6F
我聽到的也是pa5會用到pa3....
05/26 00:13, 6F

05/26 00:51, , 7F
pa5會呼叫pa3的程式計算結果而已 不代表會用到那些樹
05/26 00:51, 7F

05/26 01:42, , 8F
我是 pair<bool, bool> eval_ctrlexpr(vector<pptoken>)
05/26 01:42, 8F

05/26 01:43, , 9F
第一個bool表示ctrlexpr合法不合法,第二個表示true/false
05/26 01:43, 9F

05/26 01:43, , 10F
外部完全不需要看到這個tree 的內容。可以放心的選擇實作
05/26 01:43, 10F

05/26 02:38, , 11F
pa3不是要有數字出來? 只有bool,bool數字部分怎麼回傳的?
05/26 02:38, 11F

05/26 03:57, , 12F
阿,抱歉沒講清楚,我是說我包給 pa5 的界面 xD
05/26 03:57, 12F
感謝大家 終於順利的寫完了 (希望 7/7 前能完成 PA4, PA5 阿!) 後來發現論壇上也有人問這個問題XD 果然應該多用不同的關鍵字搜搜看 話說 LPH 大說的傳統方法該不會是那個轉後序然後求值的演算法吧XD 補充一下 最後我沒有建樹 而是直接邊 parse 邊算值 (想到建樹要寫那麼多 struct (跟, 為了方便, constructor) 就有點懶 orz) 當然這有些缺點 例如有些會 error 的 sub-expression 因為 short circuit 不會被 evaluate, 但是 type 仍然不能忽略(一個是 statics, 一個是 dynamics), 所以除了要 紀錄 type, 還要紀錄是不是 "error", NaN 之類. 最後我留下的介面是 Maybe<ControllingExpressionValue> controlling_expression(vector<Token> tokens); 這個 Maybe 跟 Boost.option 是一樣的東西 只不過 Haskell 裡面叫 Maybe 至於寫 Maybe 遇到不熟的問題被雷到又是另一件事了QQ ※ 編輯: suhorng 來自: 118.166.50.221 (05/27 23:25)

05/28 03:06, , 13F
恭喜XD我這邊直接用shared_ptr當optional用了XD便宜行事XD
05/28 03:06, 13F

05/28 14:02, , 14F
shared_ptr都是指到同一個物件我怕發生意外orz
05/28 14:02, 14F

05/28 14:02, , 15F
剛好我沒有建樹不用動態記憶體..
05/28 14:02, 15F

05/28 14:06, , 16F
我還蠻好奇 maybe 怎麼實作的,持有的物件記憶體怎麼管理?
05/28 14:06, 16F

05/28 19:45, , 17F
應該是自己管理...用unique_ptr然後該複製時複製
05/28 19:45, 17F

05/28 21:52, , 18F
了解~!
05/28 21:52, 18F

05/30 20:18, , 19F
還更傳統wwww 建優先度表直接從中序式硬算wwww
05/30 20:18, 19F

05/30 20:19, , 20F
我的結果是扔一個 PostToken 回來 如果沒事就會是個數字
05/30 20:19, 20F

05/30 20:19, , 21F
如果有事就扔 invalid 回來這樣
05/30 20:19, 21F
文章代碼(AID): #1HeAZvNA (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
情報
2
2
完整討論串 (本文為第 27 之 29 篇):
情報
4
12
情報
5
18
情報
11
21
情報
3
9
情報
11
27
情報
0
1
情報
6
19
情報
7
24
情報
2
2
文章代碼(AID): #1HeAZvNA (C_and_CPP)