[問題] 有關多載及strcmp()的題目
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC++ 2010
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
iostream, cstring
問題(Question):
我是一名自學C++沒多久的新手
最近進度看到了函式多載(function overloading)和樣板(template)
後面有一題練習題,題目如下:
請撰寫一組equal()的多載函式,能接受兩個相同型態的引數,若兩者相同則傳回1,否則
傳回0。提供的版本有:char、int、double、char*等型態的引數。使用strcmp()函式來測
試字串是否相同,若不清楚strcmp()的用法,可使用線上輔助說明,並且利用#include指
令將使用<cstring>標頭檔載入到程式裡。再撰寫一個測試程式來驗證呼叫的版本是否為正
確的版本。
現在我最大的問題就是......我看不懂題目要問什麼 =_=
一開始想說是多載四個有用到strcmp()的函式,參數型態分別用題目規定那四個
然後在main裡面讓使用者輸入兩個字串,在呼叫函式時就會自動呼叫到char*型態的函式
但因為strcmp()不接受除了char*以外的型態,而打破了這個如意算盤
再來,我就不知道題目到底要我做什麼事情了......
無論想到什麼可能的題目意思,都會受到strcmp()的限制
難道是要用static_cast來強行做出我最初的想法嗎......
希望板友們能替我解惑,感謝
程式碼(Code):(請善用置底文網頁, 記得排版)
http://codepad.org/lFq6BeeH
這是我根據第一個想法寫出來的程式碼,但錯誤一籮筐
還是貼上來給有需要的板友做參考......
補充說明(Supplement):
開始體會到,有時候題意比觀念還難懂......
另外請問大家,在構思一個程式時,要先把main想出來再想各個所需函式的架構
還是先把程式需要的函式都寫出來,再想辦法組合起來?
感謝~
--
推
10/12 21:02,
10/12 21:02
→
10/12 21:03,
10/12 21:03
→
10/12 21:03,
10/12 21:03
→
10/12 21:03,
10/12 21:03
推
10/12 21:04,
10/12 21:04
→
10/12 21:04,
10/12 21:04
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.27.22.229
→
01/26 21:09, , 1F
01/26 21:09, 1F
→
01/26 21:09, , 2F
01/26 21:09, 2F
阿,突然發現我搞錯多載的意思了,當初以為多載的條件是連函式內容都要一樣
還想說那這樣跟template有什麼不同......
※ 編輯: o07608 來自: 114.27.22.229 (01/26 21:11)
現在發現還是搞不懂題目的意思......
如果每個型態都要判斷的話,那double型態的要如何輸入......(爆炸中)
→
01/26 21:49, , 3F
01/26 21:49, 3F
第二點我也有想過,這是我目前比較想用的方法,因為對使用者比較方便
但問題是不知道要如何讓程式判斷輸入的資料的形態......
推
01/26 21:59, , 4F
01/26 21:59, 4F
→
01/26 22:00, , 5F
01/26 22:00, 5F
推
01/26 22:07, , 6F
01/26 22:07, 6F
→
01/26 22:08, , 7F
01/26 22:08, 7F
→
01/26 22:09, , 8F
01/26 22:09, 8F
→
01/26 22:09, , 9F
01/26 22:09, 9F
到這裡都是我當初理解到的範圍,但題目一進入實作面就無法理解了 ˊˋ
推
01/26 22:14, , 10F
01/26 22:14, 10F
現在正在想說要如何自行判斷輸入的資料的形態0.0
輸入值的形態一開始要設void嗎?
→
01/26 22:16, , 11F
01/26 22:16, 11F
→
01/26 22:16, , 12F
01/26 22:16, 12F
→
01/26 22:18, , 13F
01/26 22:18, 13F
是沒有,但我覺得如果能寫出來的話對使用者會比較方便 ~"~
→
01/26 22:24, , 14F
01/26 22:24, 14F
推
01/26 22:25, , 15F
01/26 22:25, 15F
→
01/26 22:25, , 16F
01/26 22:25, 16F
→
01/26 22:30, , 17F
01/26 22:30, 17F
→
01/26 22:31, , 18F
01/26 22:31, 18F
→
01/26 22:31, , 19F
01/26 22:31, 19F
→
01/26 22:31, , 20F
01/26 22:31, 20F
我還是先別好高騖遠,把判斷輸入留到之後再弄好了......ˊˋ
→
01/26 22:42, , 21F
01/26 22:42, 21F
→
01/26 22:43, , 22F
01/26 22:43, 22F
→
01/26 22:43, , 23F
01/26 22:43, 23F
→
01/26 22:48, , 24F
01/26 22:48, 24F
→
01/26 22:49, , 25F
01/26 22:49, 25F
→
01/26 22:50, , 26F
01/26 22:50, 26F
→
01/26 22:51, , 27F
01/26 22:51, 27F
→
01/26 22:52, , 28F
01/26 22:52, 28F
我剛剛自己測試參數型態為char* 型態的函式時,是會成功的
不過我有在main裡先設兩個char陣列,再用char* 指向它們
如果是這樣的話,那不用char const*(不是const char* 喔0.0?)也可以嗎?
→
01/26 22:54, , 29F
01/26 22:54, 29F
→
01/26 22:56, , 30F
01/26 22:56, 30F
→
01/26 22:58, , 31F
01/26 22:58, 31F
→
01/26 22:58, , 32F
01/26 22:58, 32F
→
01/26 23:00, , 33F
01/26 23:00, 33F
了解了!
→
01/26 23:01, , 34F
01/26 23:01, 34F
→
01/26 23:01, , 35F
01/26 23:01, 35F
→
01/26 23:02, , 36F
01/26 23:02, 36F
→
01/26 23:03, , 37F
01/26 23:03, 37F
→
01/26 23:04, , 38F
01/26 23:04, 38F
原來const有這種規定......幸好今天有學到了0.0
→
01/26 23:06, , 39F
01/26 23:06, 39F
自己筆記一下:string literal的意思是雙引號("")中間包的東西
※ 編輯: o07608 來自: 114.27.22.229 (01/26 23:15)
大概開始理解我當初為什麼會一直不知道要怎麼做了
題目有提到「檢查字串」,然後我就一直在想要如何也檢查「整數串」「小數串」等等
而且還自我設限說不能一個數一個數打進去存入陣列
要像字串那樣可以直接啪啦啦打一整串再按enter進去檢查
囧a
→
01/26 23:34, , 40F
01/26 23:34, 40F
→
01/26 23:36, , 41F
01/26 23:36, 41F
→
01/26 23:37, , 42F
01/26 23:37, 42F
是這樣子沒錯......
不過我問我大學的導師,他的建議是沒接觸過程式的新手可以先買中文書來研讀練習
免得買原文書,結果看不下去提早放棄這樣 ._.
→
01/26 23:43, , 43F
01/26 23:43, 43F
→
01/27 00:00, , 44F
01/27 00:00, 44F
main裡面忘記加const了~ 感謝!!
※ 編輯: o07608 來自: 114.27.22.229 (01/27 00:02)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):