推 meaning12:7-11 10/12 21:02
→ tingyun60426:7-4=-11 10/12 21:03
→ tingyun60426:哦 shit 打錯 是 1110/12 21:03
→ s26307722:7-4=3?10/12 21:03
推 s511320:7-4=3 謝謝10/12 21:04
→ tingyun60426:囧 請忽略我的推文10/12 21:04
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.27.22.229
→ azureblaze:他應該只有傳入char*的時候才要用strcmp() 01/26 21:09
→ azureblaze:其他型態用== 01/26 21:09
阿,突然發現我搞錯多載的意思了,當初以為多載的條件是連函式內容都要一樣
還想說那這樣跟template有什麼不同......
※ 編輯: o07608 來自: 114.27.22.229 (01/26 21:11)
現在發現還是搞不懂題目的意思......
如果每個型態都要判斷的話,那double型態的要如何輸入......(爆炸中)
→ PkmX:1. 先問對方他要輸入哪一種型態 2. 讀進來自行判斷 01/26 21:49
第二點我也有想過,這是我目前比較想用的方法,因為對使用者比較方便
但問題是不知道要如何讓程式判斷輸入的資料的形態......
推 flydragon198:多載不是這樣用的,而是你自定四個同名函式,有不同 01/26 21:59
→ flydragon198:類型的引數,然後他自動會找匹配的多載去執行 01/26 22:00
推 flydragon198:這個題目應該只是要告訴你,同樣名字的函式,會因為 01/26 22:07
→ flydragon198:引數型態的不同,而呼叫不同的函式 01/26 22:08
→ flydragon198:a(int) 和 a(double)是兩個不同函式,根據你的參數 01/26 22:09
→ flydragon198:型態不同,它會自動匹配去執行a(int)或a(double) 01/26 22:09
到這裡都是我當初理解到的範圍,但題目一進入實作面就無法理解了 ˊˋ
推 flydragon198:你多設定兩個變數double1和double2去帶入就好了..... 01/26 22:14
現在正在想說要如何自行判斷輸入的資料的形態0.0
輸入值的形態一開始要設void嗎?
→ flydragon198:int equal(double x, double y) 01/26 22:16
→ flydragon198:{ return double1+double2; } // 不用用到strcmp 01/26 22:16
→ flydragon198:這個題目應該沒要你判斷輸入的資料是字串還是數字~~~ 01/26 22:18
是沒有,但我覺得如果能寫出來的話對使用者會比較方便 ~"~
→ loveme00835:double 的版本題目沒給清楚 01/26 22:24
推 flydragon198:有函式可以判斷輸入的是不是數字 01/26 22:25
→ azureblaze:這邊的「使用者」是使用code的人,不是使用程式的人 01/26 22:30
→ azureblaze:他的目的是讓寫程式的人不用去equalStr(),equalInt(), 01/26 22:31
→ azureblaze:equalDouble(),equalMyClass()... 01/26 22:31
→ azureblaze:判斷輸入是什麼是另外一層的問題 01/26 22:31
我還是先別好高騖遠,把判斷輸入留到之後再弄好了......ˊˋ
→ loveme00835:因為還有 NaN 等數值的關係, 要做到完善不是 == 就可 01/26 22:43
→ loveme00835:以解決的, 如果不care那些, 這個算是基本題 01/26 22:43
→ loveme00835:另外提到一點書本上不會講到的: char* 作為參數型態時 01/26 22:48
→ loveme00835:表示 '接受一個字元變數的位址', 如果變成char const* 01/26 22:49
→ loveme00835:則變成 '接受c-type string的起始位址', 這個有可能是 01/26 22:50
→ loveme00835:string literal引數, 語意不一樣所以要注意, 所以這題 01/26 22:51
→ loveme00835:要改成 char const* 而不是 char* 01/26 22:52
我剛剛自己測試參數型態為char* 型態的函式時,是會成功的
不過我有在main裡先設兩個char陣列,再用char* 指向它們
如果是這樣的話,那不用char const*(不是const char* 喔0.0?)也可以嗎?
→ loveme00835:再來回答你最後一個問題, 寫程式'前'先分析功能, 再來 01/26 22:54
→ loveme00835:將不同的功能儘量分解成數個小部分, 這是即將變成函式 01/26 22:56
→ loveme00835:的, 再來決定功能的執行順序跟相依性, 這決定了函式誰 01/26 22:58
→ loveme00835:先呼叫誰後呼叫, 還有誰呼叫誰, 寫程式'時'就要看你怎 01/26 22:58
→ loveme00835:樣組合它了, 先組所有零件放好, 還是等要用零件再去組 01/26 23:00
了解了!
→ loveme00835:型態的解讀從右而左, char const *= pointer to a 01/26 23:01
→ loveme00835:const char, const 用來修飾'左邊'的元件, 但是有一特 01/26 23:01
→ loveme00835:例就是當左邊沒東西了就修飾右邊, 記通則以後遇到複雜 01/26 23:02
→ loveme00835:的型態才不會混淆, char * 指向 string literal 存取 01/26 23:03
→ loveme00835:時通常會炸掉 01/26 23:04
原來const有這種規定......幸好今天有學到了0.0
→ loveme00835:上面是指 write 01/26 23:06
自己筆記一下:string literal的意思是雙引號("")中間包的東西
※ 編輯: o07608 來自: 114.27.22.229 (01/26 23:15)
大概開始理解我當初為什麼會一直不知道要怎麼做了
題目有提到「檢查字串」,然後我就一直在想要如何也檢查「整數串」「小數串」等等
而且還自我設限說不能一個數一個數打進去存入陣列
要像字串那樣可以直接啪啦啦打一整串再按enter進去檢查
囧a
→ loveme00835:它應該要寫: 在 "char const * 版本中使用 strcmp..." 01/26 23:34
→ loveme00835:或者 "測試字串是否相同'可以'用strcmp()", btw 我堅 01/26 23:36
→ loveme00835:持不看非 原文書/中譯書, 怕的就是語意混淆 01/26 23:37
是這樣子沒錯......
不過我問我大學的導師,他的建議是沒接觸過程式的新手可以先買中文書來研讀練習
免得買原文書,結果看不下去提早放棄這樣 ._.
→ loveme00835:anyway, 後來有完成這題嗎? 01/26 23:43
http://codepad.org/vVNNoY8H 這是只完成題目需求的程式碼
應該是沒問題了,可是我用VC++2010編會過,丟到codepad上他卻跳警告......0.0
→ loveme00835:那就是我推文中說的 0.0 01/27 00:00
main裡面忘記加const了~ 感謝!!
※ 編輯: o07608 來自: 114.27.22.229 (01/27 00:02)