Re: [問題] 個性測驗程式
※ 引述《OhyaPTT (Ohya)》之銘言:
: 已爬文
: 這次老師是出
: 個性測驗程式開發
: 就是
: 回答問題一後
: 是就跳問題幾
: 否就跳問題幾這樣
: 雖然有提示了
: 雖然有爬文了
: 但是還是不懂怎麼寫...
: 然後只能用陣列和迴圈
: 跪求講解QQ
: -----
: Sent from JPTT on my HTC Desire 600.
machine learning 讀到腦袋燒掉,手很癢摸摸水晶球來回一下.....
(題外話,為什麼 PTT 沒有 machine learning 或 AI 的討論板啊....... ?)
首先,你要先畫的出測驗流程才行,也就是什麼問題後面要接上什麼問題(或解答)。
如果答案只有 是/否 而已的話,那就是棵簡單的二元樹。
以下我就隨便畫一個
question
result
[0]
N Y
/ \
[0] [1]
Y N
/ \
[2] [1]
Y N
/ \
[2] [3]
Y N
/ \
[3] [4]
意思就是 question[0] 回答 N 就會到 result[0] 回答 Y 就會到 question[1]
如此一來,程式流程可以這麼寫:
question[]: 一堆問題的集合,這裡用陣列來放。
result[]: 一堆測驗結果的集合,這裡用陣列來放,且每個都是葉節點。
question_index = root
while 測驗中:
印出問題(根據 question_index)
讀取使用者的回應
更新 question_index
if 到達葉節點(問題問完,結果出來了)
更新 result_index
印出 result_index
測驗中的判斷式就自己想吧,簡單一點就...
bool isTesting = true;
while (isTesting)
....
if (到達葉節點)
isTesting = false;
為了證明我不豪洨,我就隨手寫一個奇怪的範例吧:http://codepad.org/2vPpts8A
只不過結構可能稍微改變一下,直接把 result 填進 question 的後面來節省行數 lol
[0]
N Y
/ \
[4] [1]
Y N
/ \
[2] [5]
Y N
/ \
[6] [3]
Y N
/ \
[7] [8]
不過這是因為只能用陣列和迴圈,
姑且當作你連 pointer、structure 都沒教過也不能用(其實我覺得這很奇怪。)
不然我可能傾向用 C++ 弄個 class Node {...}
然後在裡面判斷該節點是 question 或是 result,
最後跑 .next() 用指標 implement 等等。
以上
歡迎發問與指教。
--
並且希望原 PO 看完了不管有沒有收穫都給個回應,別讓我覺得我回了一篇文給石頭看。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.60.254.39
※ 文章網址: http://www.ptt.cc/bbs/C_and_CPP/M.1418367183.A.E08.html
※ 編輯: ACMANIAC (61.60.254.39), 12/12/2014 14:53:17
推
12/12 16:32, , 1F
12/12 16:32, 1F
※ 編輯: ACMANIAC (61.60.254.39), 12/12/2014 17:11:34
推
12/12 17:14, , 2F
12/12 17:14, 2F
推
12/12 21:45, , 3F
12/12 21:45, 3F
是的,有發現但還是有沒改到的地方,感謝指正!
※ 編輯: ACMANIAC (111.252.92.21), 12/13/2014 00:44:07
推
01/05 11:36, , 4F
01/05 11:36, 4F
討論串 (同標題文章)