[問題] 我的寫法 跑不出老師的答案

看板C_and_CPP作者 (povertytrap)時間15年前 (2010/09/30 22:20), 編輯推噓8(8043)
留言51則, 9人參與, 最新討論串1/3 (看更多)
各位大大好 小弟是第一次在C版發文 因為我有修資料結構 而我們老師有出個題目 是說用副程式寫出C的排列組合 意思是C的(m,n) m在上n在下會等於 m階/{n階*(m-n)階} 然後要用副程式寫 #include <stdio.h> #include <stdlib.h> long int factor(int p); /* 函式宣告*/ long int factor(int p) /* 函式定義*/ { ------------------------- } void main(void) { ------xxx= factor(int p) /* 呼叫函式*/ } 而我的寫法是 #include <stdio.h> #include <stdlib.h> int factor(a,b) { a=1,b; while(a>=1) { b*=a; a--; } return b; } void main(void) { int m,n; printf("請輸入排列組合C(m,n)的值\n"); printf("m="); scanf("%d",&m); printf("n="); scanf("%d",&n); printf("C(%d,%d)=%d\n",m,n,(factor(m,m)/(factor(n,n)*factor(m-n,m-n)))); system("pause"); return(0); } 輸入m=10 n=8 答案應該是45 可是我的都是0 請問我的寫法錯在哪 而且老實說 我的程式(factor(m,m)/(factor(n,n)*factor(m-n,m-n)不是很懂 為何C(m,n)的意思我懂 那factor(m,m)這樣的意思是? 這是我抄同學的(他也是抄別人的所以也不是很懂) 而我們班有修資料結構的不多 我又是身障生比較內向不敢問其他人 請問有大大能幫我解答嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.25.118.145

09/30 22:24, , 1F
factor 內 b 沒有給適當的初始值
09/30 22:24, 1F

09/30 22:24, , 2F
看錯, 請忽略一樓...Orz
09/30 22:24, 2F

09/30 22:27, , 3F
歡迎這位新同學,呀比。 建議:標題簡短描述內文,比如
09/30 22:27, 3F

09/30 22:27, , 4F
『C(m,n) 排列組合的計算寫不出來』,再來,不要抄別人的
09/30 22:27, 4F

09/30 22:28, , 5F
可以試試每次呼叫 factor()時, 把傳入變數數值顯示出來
09/30 22:28, 5F

09/30 22:28, , 6F
程式碼,全部自己寫,會寫多少就貼多少出來,然後說清楚你
09/30 22:28, 6F

09/30 22:28, , 7F
哪些不懂,大家就會回你。
09/30 22:28, 7F

09/30 22:29, , 8F
factor 指的是階乘 所以只需要一個輸入即可 n! = 1*..*n
09/30 22:29, 8F

09/30 22:31, , 9F
謝謝樓上得大大 可是可能小弟我比較笨....
09/30 22:31, 9F

09/30 22:31, , 10F
四樓大大的意思我還是不懂.....
09/30 22:31, 10F

09/30 22:31, , 11F
抄也要找對的人抄吧......
09/30 22:31, 11F

09/30 22:31, , 12F
說錯是五樓
09/30 22:31, 12F

09/30 22:32, , 13F
五樓講的就是在 factor 加個 printf("%d, %d\n", a, b);
09/30 22:32, 13F

09/30 22:33, , 14F
喔喔 那竟然factor指的是階 為甚麼要(m,m)呢?
09/30 22:33, 14F

09/30 22:34, , 15F
int factor(a,b) <<這樣也能編的過??
09/30 22:34, 15F

09/30 22:34, , 16F
我也很好奇,這個程式毛病還真不少...
09/30 22:34, 16F

09/30 22:35, , 17F
請問有錯嗎.......?
09/30 22:35, 17F

09/30 22:35, , 18F
void main() {... return 0; } 這樣也行?
09/30 22:35, 18F

09/30 22:36, , 19F
那個是題目= =應該是老師打錯
09/30 22:36, 19F

09/30 22:37, , 20F
int factor(int a) { return a*(a==1?1:factor(a-1))}
09/30 22:37, 20F

09/30 22:37, , 21F
應該是 int main(void)對吧
09/30 22:37, 21F

09/30 22:38, , 22F
樓上的大大意思是= =?
09/30 22:38, 22F

09/30 22:39, , 23F
為什麼題目的 factor 只有 (int p)
09/30 22:39, 23F

09/30 22:39, , 24F
但你的 factor 卻變成 (a, b) 兩個數字?
09/30 22:39, 24F

09/30 22:39, , 25F
我不知道耶我已經從投影片複製貼上了
09/30 22:39, 25F

09/30 22:40, , 26F
請思考清楚吧
09/30 22:40, 26F

09/30 22:41, , 27F
因為我的a其實是multiplier b就是product
09/30 22:41, 27F

09/30 22:42, , 28F
是利用product *= multiplier;下一行 multiplier--;
09/30 22:42, 28F

09/30 22:46, , 29F
factor應該這樣就夠了 http://nopaste.csie.org/f71c5
09/30 22:46, 29F

09/30 22:46, , 30F
那請將 a=1,b; 這行拿掉 然後b的相對位置的input改為 1
09/30 22:46, 30F

09/30 22:47, , 31F
然後把 factor 的 function prototype改成輸入兩個int 吧
09/30 22:47, 31F

09/30 22:49, , 32F
我大概懂了 謝謝各位大大 可是想請問 為何(m,m)?
09/30 22:49, 32F

09/30 22:49, , 33F
你應該還沒懂,因為 (m, m) 是錯誤的寫法
09/30 22:49, 33F

09/30 22:50, , 34F
>>factor(a,b)<<這樣也能編的過?? http://ppt.cc/-xL5
09/30 22:50, 34F

09/30 22:51, , 35F
真的跑得過阿.........答案都對 可是如果是錯的
09/30 22:51, 35F

09/30 22:51, , 36F
09/30 22:51, 36F

09/30 22:51, , 37F
那該怎麼表達 難道就刪掉嗎?
09/30 22:51, 37F

09/30 22:51, , 38F
也不是說錯不錯啦, 只是介面設計成這樣很多餘...邏輯
09/30 22:51, 38F

09/30 22:51, , 39F
上更容易混淆
09/30 22:51, 39F

09/30 22:52, , 40F
樓上說的對,你要寫成(m,m)嚴格不能說錯,但沒必要
09/30 22:52, 40F

09/30 22:53, , 41F
喔喔 謝謝 是聽身障學長說有這個版 謝謝大家 我會了
09/30 22:53, 41F

09/30 22:53, , 42F
看了J大的答案 謝謝
09/30 22:53, 42F

09/30 22:54, , 43F
建議你再仔細看看老師給的題目跟你的程式...
09/30 22:54, 43F

09/30 22:56, , 44F
能得到解答不是重點,解題的過程腳踏實地,搞懂每個地方
09/30 22:56, 44F

09/30 22:56, , 45F
才是正道。當然如果你只是想要學分,不是真心要學習就...
09/30 22:56, 45F

09/30 23:00, , 46F
我一定要學!!因為我只能走程是這條路
09/30 23:00, 46F

09/30 23:07, , 47F
那就跟你說聲加油囉 :)
09/30 23:07, 47F

10/01 00:18, , 48F
10/01 00:18, 48F

10/01 00:21, , 49F
想法沒錯 可是你的邏輯錯了 m=10 n=8 你自己帶進去跑跑看
10/01 00:21, 49F

10/01 00:22, , 50F
因為a--使得你的迴圈只有跑一次
10/01 00:22, 50F

10/01 02:45, , 51F
樓上說的沒錯,只是factor沒發揮到它的階層功能罷了。
10/01 02:45, 51F
文章代碼(AID): #1Cf9ofcf (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1Cf9ofcf (C_and_CPP)