[問題] C++ 猜數字

看板C_and_CPP作者 (最終的序曲)時間14年前 (2010/03/11 21:06), 編輯推噓8(8017)
留言25則, 6人參與, 最新討論串1/6 (看更多)
遇到的問題: (題意請描述清楚) 小弟我想寫一個猜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

03/11 21:09, , 1F
數字遊戲的規則一般是四個不重複的數字吧!
03/11 21:09, 1F

03/11 21:09, , 2F
如果要重複的話應該不能用幾A幾B來表示吧!!
03/11 21:09, 2F

03/11 21:10, , 3F
是的,可是我這個是特別的,還有得分的規則呢= =
03/11 21:10, 3F

03/11 21:10, , 4F
先判斷輸入是否合法 這樣就不用解決上面那問題了Y
03/11 21:10, 4F

03/11 21:11, , 5F
那在允許重複數字的情況下,大家有更好的比較答案法嗎?
03/11 21:11, 5F

03/11 21:13, , 6F
抱歉,問題有點複雜,因為我一定要有加分的規則
03/11 21:13, 6F

03/11 21:13, , 7F
trueAns可以改成[4][2] 把第二個當作MARK 先判斷A的個數 如
03/11 21:13, 7F

03/11 21:14, , 8F
果有MATCH到 就在MARK區做記號 然後判斷B的個數時 就不要算
03/11 21:14, 8F

03/11 21:22, , 9F
有沒有明知道有錯誤訊息, 也不照格式PO出來的八卦...
03/11 21:22, 9F

03/11 21:24, , 10F
小弟我也另外覺得, 都說了看到錯誤訊息, 順手貼出來也不
03/11 21:24, 10F

03/11 21:24, , 11F
是難事~_~
03/11 21:24, 11F

03/11 21:26, , 12F
對了, class內, setSocre()函數的傳入參數的型態宣告勒?
03/11 21:26, 12F
不好意思,小弟無知= =|| 已補上錯誤訊息。 V大說的是setScore()的a和b嗎?那個宣告我放在private之後, 不曉得這樣對不對…… ※ 編輯: semurderer 來自: 140.115.206.28 (03/11 21:40)

03/11 21:52, , 13F
錯很大; 寫在func(參數區)的是說明這個func/method型態
03/11 21:52, 13F

03/11 21:54, , 14F
它指明這個func需要怎樣type與數量的參數, 以怎樣的變數
03/11 21:54, 14F

03/11 21:54, , 15F
名字傳入func; 寫在private下的是指這個class的data
03/11 21:54, 15F

03/11 21:54, , 16F
member.
03/11 21:54, 16F

03/11 21:56, , 17F
補充, 還有helper function
03/11 21:56, 17F

03/11 21:57, , 18F
忽然發現這樣打怪怪的, 補一下, 我上面四行是說那個a,
03/11 21:57, 18F

03/11 21:58, , 19F
b出現在兩邊的不同@_@"
03/11 21:58, 19F
所以是把int setSocre( a, b )改成int setSocre( int a, int b )嗎…? ※ 編輯: semurderer 來自: 140.115.206.28 (03/11 22:00)

03/11 22:08, , 20F
剛發現好像是改成int setScore()才對
03/11 22:08, 20F

03/11 22:34, , 21F
int setSocre() 與 int setSocre(int a, int b) 兩者都
03/11 22:34, 21F

03/11 22:34, , 22F
是合於語法的(compile時不會有error發生在這裡); 但是怎
03/11 22:34, 22F

03/11 22:34, , 23F
樣的func/method才符合你的需要, 是你要自己design出來
03/11 22:34, 23F

03/11 22:35, , 24F
的, 所以setSocre()要不要傳東西你要自己問自己想清楚:)
03/11 22:35, 24F

03/11 22:56, , 25F
好的,謝謝大家的幫忙~
03/11 22:56, 25F
文章代碼(AID): #1BcEhOLs (C_and_CPP)
文章代碼(AID): #1BcEhOLs (C_and_CPP)