看板 C_and_CPP 關於我們 聯絡資訊
遇到的問題: (題意請描述清楚) 小弟我想寫一個猜4位數字的程式 已預設好正確答案了 所以接下來就是弄輸入玩家答案、比對兩答案和得分的問題 可是我的class的程式碼都沒辦法編譯,一直出現錯誤訊息 請問各位前輩我的class程式碼是哪裡出錯了? 小弟沒學過C,而C++才學沒多久,請各位指點,謝謝! 有問題的code: (請善用置底文標色功能) #include <iostream> using std::cout; using std::cin; using std::endl; #include <string> using std::string; class Guess { public: //決定答案是否正確 //a代表數字和位置皆正確,b代表只有數字正確 //Ans是玩家答案,tureAns為正確答案 void detAns( int Ans[4], int trueAns[4] ) { for ( int i = 0; i <= 3; i++ ) { for ( int j = 0; j <= 3; j++ ) { if ( trueAns[i] == Ans[j] ) { if ( i == j ) a++; else b++; } } } } //在各個情況下加幾分 int setSocre( a, b ) { if ( a==4 ) score += 10000; if ( a==3 && b==1 ) score += 3000; if ( a==2 && b==2 ) score += 1600; if ( a==1 && b==3 ) score += 800; if ( b==4 ) score += 400; if ( b==3 ) score += 10; if ( b==2 ) score += 2; if ( true ) score -= 1; } //回傳得分 int getScore() { return score; } private: int a, b; int score = 100; }; 補充: 抱歉,補上錯誤訊息: 34 C:\Dev-Cpp\work\hw1.cpp expected `;' before '(' token 55 C:\Dev-Cpp\work\hw1.cpp expected `;' before "int"   C:\Dev-Cpp\work\hw1.cpp In function `int main()': 71 C:\Dev-Cpp\work\hw1.cpp initializer for scalar variable requires one   element 順便再問,我用雙迴圈比較答案。但若是預設答案為1234 而我輸入的答案為1212,結果就變成2a2b的情況,這該如何解決? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.115.206.28
evomichael:數字遊戲的規則一般是四個不重複的數字吧! 03/11 21:09
evomichael:如果要重複的話應該不能用幾A幾B來表示吧!! 03/11 21:09
semurderer:是的,可是我這個是特別的,還有得分的規則呢= = 03/11 21:10
otira:先判斷輸入是否合法 這樣就不用解決上面那問題了Y 03/11 21:10
semurderer:那在允許重複數字的情況下,大家有更好的比較答案法嗎? 03/11 21:11
semurderer:抱歉,問題有點複雜,因為我一定要有加分的規則 03/11 21:13
otira:trueAns可以改成[4][2] 把第二個當作MARK 先判斷A的個數 如 03/11 21:13
otira:果有MATCH到 就在MARK區做記號 然後判斷B的個數時 就不要算 03/11 21:14
dendrobium:有沒有明知道有錯誤訊息, 也不照格式PO出來的八卦... 03/11 21:22
VictorTom:小弟我也另外覺得, 都說了看到錯誤訊息, 順手貼出來也不 03/11 21:24
VictorTom:是難事~_~ 03/11 21:24
VictorTom:對了, class內, setSocre()函數的傳入參數的型態宣告勒? 03/11 21:26
不好意思,小弟無知= =|| 已補上錯誤訊息。 V大說的是setScore()的a和b嗎?那個宣告我放在private之後, 不曉得這樣對不對…… ※ 編輯: semurderer 來自: 140.115.206.28 (03/11 21:40)
VictorTom:錯很大; 寫在func(參數區)的是說明這個func/method型態 03/11 21:52
VictorTom:它指明這個func需要怎樣type與數量的參數, 以怎樣的變數 03/11 21:54
VictorTom:名字傳入func; 寫在private下的是指這個class的data 03/11 21:54
VictorTom:member. 03/11 21:54
loveme00835:補充, 還有helper function 03/11 21:56
VictorTom:忽然發現這樣打怪怪的, 補一下, 我上面四行是說那個a, 03/11 21:57
VictorTom:b出現在兩邊的不同@_@" 03/11 21:58
所以是把int setSocre( a, b )改成int setSocre( int a, int b )嗎…? ※ 編輯: semurderer 來自: 140.115.206.28 (03/11 22:00)
semurderer:剛發現好像是改成int setScore()才對 03/11 22:08
VictorTom:int setSocre() 與 int setSocre(int a, int b) 兩者都 03/11 22:34
VictorTom:是合於語法的(compile時不會有error發生在這裡); 但是怎 03/11 22:34
VictorTom:樣的func/method才符合你的需要, 是你要自己design出來 03/11 22:34
VictorTom:的, 所以setSocre()要不要傳東西你要自己問自己想清楚:) 03/11 22:35
semurderer:好的,謝謝大家的幫忙~ 03/11 22:56