[語法] 誰可以幫我找錯誤??

看板C_and_CPP (C/C++)作者 (ming chieh)時間16年前 (2009/11/18 00:12), 編輯推噓2(2012)
留言14則, 4人參與, 最新討論串1/1
我寫了一段程式碼 找不到錯誤 但卻一直不過 題目是找perfect number perfect number就是某一整數等於除了自己之外所有因數的總和 ex:6=1+2+3 28=1+2+4+7+14 而且規定要用主程式呼叫函式 因為星期四就要交了,謝謝您的幫忙!! #include "stdafx.h" #include "iostream" using namespace std; int perfect_number(void); int _tmain(int argc, _TCHAR* argv[]) { int k; k=perfect_number(); int sum; int i; if(k==i) cout<<i<<"是個perfect number!!"<<endl ; system("pause"); return 0; } int perfect_number() { int sum; //sum用來儲存因數和 int i=0,j=0; for(i=1;i<10000;i++) { sum=0; for(j=1;j<i;j++) { if(i%j==0) sum=sum+j; } return sum; } } -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.242.142

11/18 00:18, , 1F
int i; if (k == i) 你的 i 的值呢?
11/18 00:18, 1F

11/18 00:20, , 2F
我就是卡在這裡
11/18 00:20, 2F

11/18 00:21, , 3F
不知道如何回傳i,是用return i嗎?
11/18 00:21, 3F

11/18 00:25, , 4F
你的邏輯有點錯耶,你並沒比較,只是把sum加總傳回去
11/18 00:25, 4F

11/18 00:25, , 5F
你可以在完美數副程式直接比較,直接印出 不用傳回去阿
11/18 00:25, 5F

11/18 00:25, , 6F
我也覺得邏輯有問題 建議原po再想想「你要做的每一步」
11/18 00:25, 6F

11/18 00:26, , 7F
哪裡??我還是聽不懂......
11/18 00:26, 7F

11/18 00:27, , 8F
完美數ex, 6的因數有1,2,3 而6=1+2+3 所以條件是i==sum
11/18 00:27, 8F

11/18 00:39, , 9F
可是老師規定要用主程式呼叫
11/18 00:39, 9F

11/18 00:40, , 10F
我會先建議你通通寫在main裡面並執行正確 再思考如何改
11/18 00:40, 10F

11/18 00:41, , 11F
嗯~~我照你說的試一試!!
11/18 00:41, 11F

11/18 09:52, , 12F
你的問題在不管是不是完美數 第二層迴圈做完就RETURN啦
11/18 09:52, 12F

11/18 09:53, , 13F
就像fjf大說的 加行if(i==sum) return sum;
11/18 09:53, 13F

11/18 09:53, , 14F
以上為不負責任發言
11/18 09:53, 14F
文章代碼(AID): #1B0ijLUG (C_and_CPP)
文章代碼(AID): #1B0ijLUG (C_and_CPP)