[課業] 撲克牌作業

看板NTUE-CS101作者 (球童Yanting)時間16年前 (2009/05/07 04:19), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串1/1
交作業的時間本來是一個星期 因為這次作業需要考慮的東西比較多 我跟老師建議改成兩個星期(5/19) 你們可以先想想我今天說的花色點數 先寫看看 怎麼亂數產生兩張牌 比較大小 還有cout他是什麼花色和點數 然後想看看怎麼洗牌 你可以想像一下平常你怎麼洗真的撲克牌 像是 把中間一疊 拿出來 放到最上面 或是 把排分成兩邊左右手各拿一邊 然後把兩邊牌合在一起 等等 第一種寫成程式 for(i=1~52/3){ t=a[i]; a[i]=a[i+52/3]; a[i+52/3]=t; } (52/3=17, 所以就是 a[1]和a[18]交換 a[2]和a[19]交換 ... a[17]和a[34]交換) 第二種寫成程式 開一個新的陣列 b for(i=0~52/2-1;i=i+2){ b[2*i]=a[i]; b[2*i+1]=a[i+52/2]; } 這些是用手洗牌的方法 想想你平常怎麼用手洗牌的 就可以轉成程式碼囉 有人會問 這樣會不會洗不乾淨 我會說 一定會 因為不一定每一張牌都會交換到 不過你做的次數夠多也ok 電腦裡面洗牌是用另外一種方法 每次產生一個不重複的1~52的亂數放到陣列裡 只要你程式執行的亂數表不同 基本上就不太會選到完全一樣的亂數順序 大家可以練習看看交換牌的方法洗牌 還有想一下亂數順序的洗牌 下禮拜我會講一下亂數順序的程式怎麼寫 加油~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.68.15.209

05/07 20:55, , 1F
真是有難度!!!
05/07 20:55, 1F

05/07 22:51, , 2F
感謝學長阿!!,最近程式越來越難﹦﹦哭哭阿。
05/07 22:51, 2F
文章代碼(AID): #1A0V2tk- (NTUE-CS101)