freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

撲克牌洗牌發(fā)牌過(guò)程模擬課程設(shè)計(jì)(已修改)

2025-05-23 19:51 本頁(yè)面
 

【正文】 珠海學(xué)院 課 程 設(shè) 計(jì) 報(bào) 告 學(xué)院、系: 吉林大學(xué)珠海學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系 專(zhuān)業(yè)名稱(chēng) : 計(jì)算機(jī)科學(xué)與技術(shù) 設(shè)計(jì)科目 : 程序設(shè)計(jì)基礎(chǔ)課程設(shè)計(jì) 學(xué)生姓名: 指導(dǎo)教師: 完成時(shí)間: 2021年 5月 5日 第一章 — 撲克牌洗牌發(fā)牌過(guò)程模擬 編寫(xiě)一個(gè)模擬人工洗牌的程序,將洗好的牌分別發(fā)給四個(gè)人。對(duì)每個(gè)人的牌要按橋牌的規(guī)則輸出。即一個(gè)人的牌要先按牌的花色(順序?yàn)槊坊?、方塊、紅心和黑桃)進(jìn)行分類(lèi),同一類(lèi)的牌要再按 A、 K、 Q、 J、 … 、 2牌的大小順序排列。 另發(fā)牌應(yīng)按四個(gè)人的順序依次分發(fā)。 設(shè)計(jì)任務(wù)與目標(biāo) 模擬人工洗牌的題目,用自己所學(xué)的 C++進(jìn)行編寫(xiě),并且完善隨機(jī)洗牌算法,以及排序算法的優(yōu)化, 學(xué)習(xí) 習(xí)課程的學(xué)習(xí)經(jīng)驗(yàn),加強(qiáng)自己的動(dòng)手實(shí)踐能力,增加知識(shí),強(qiáng)化學(xué)習(xí),是自己獲得進(jìn)步。 方案設(shè)計(jì)與論證 根據(jù)題目要求,設(shè)置一個(gè)結(jié)構(gòu)體 card,因?yàn)橐粡埮朴谢ㄉ蛿?shù)字的不同,所以結(jié)構(gòu)體 card包括了 flag和 value兩個(gè)成員,其中 flag用整型{ 1, 2, 3, 4}來(lái)分別表示梅花,方塊,紅心和黑桃四種花色; value用{1,2,3,4,5,6,7,8,9,10,11,12,13}來(lái)表示牌上的數(shù)字。因此一張牌可以由 flag和 value的組合來(lái)唯一確定。在 ASCFlag和 ASCValue分別來(lái)表示 ASCII碼的撲克花印以及撲克符號(hào)。 洗牌( shuffle )。 由 于 洗 牌 時(shí) 牌 的 順 序 是 隨 機(jī) 的 , 所 以 用 到 了void srand(unsigned seed)和 int rand(void)函數(shù)。通過(guò) srand 函數(shù)設(shè)置 rand函數(shù)所用得到隨機(jī)數(shù)產(chǎn)生算法的種子值來(lái)不斷改變 rand 函數(shù)的隨機(jī)數(shù)的啟動(dòng)種子值,以產(chǎn)生最佳的隨機(jī)數(shù)。又由于相同的種子后面的 rand() 函數(shù)會(huì)出現(xiàn)一樣的隨機(jī)數(shù)。所以為了防止隨機(jī)數(shù)每次重復(fù)常常使用系統(tǒng)時(shí)間來(lái)初始化,即使用time函數(shù)來(lái)獲得系統(tǒng)的時(shí)間,將 time_t型數(shù)據(jù)轉(zhuǎn)化為( unsigned)型再傳給 srand函數(shù) , 即 srand ( (unsigned ) time(amp。t))。 而 在 這 里 所 用 的 則 是srand(time(NULL)),直接傳入一個(gè)空指針。用 0 到 51 的整數(shù)分別對(duì)應(yīng) 52 張牌 隨機(jī)產(chǎn)生 0 到 51 之間的一個(gè)整數(shù),將該整數(shù)所對(duì)應(yīng)的那張牌與 0 對(duì)應(yīng)的那張牌交換,然后隨機(jī)產(chǎn)生 1 到 51之間的一個(gè)整數(shù),重復(fù)該過(guò)程,使他們僅交換數(shù)組下標(biāo),從而不改變撲克符號(hào)和花 印。 排序( sort)。排序包括按花色排序和按大小排序 。在按花色排序中,利用 sort函數(shù),根據(jù)冒泡排序法,從第一張牌開(kāi)始依次與其后面的牌比較 flag 的大小,若第一張牌的 flag 大于后面的,則兩者交換,否則繼續(xù)。同理:在按照大小排序時(shí),按照冒泡排序法,大的值在前,小的在后。而在花色排好之后,只需要在某種花色的內(nèi)部進(jìn)行大小排序即可。 牌的顯示( colour PX[])。牌的顯示包括花色和數(shù)字。用 switch函數(shù)把原來(lái)的 flag和 value成員賦值給 ASCFlag和 ASCValue成員,讓 ASCFlag和 ASCValue成員打印出ASCII碼花色和符號(hào)。 設(shè)置四個(gè)數(shù)組 A[u], B[u], C[u], D[u]來(lái)分別表示四個(gè)人的牌。然后模擬出 52張牌。( 2)洗牌。( 3)發(fā)牌:發(fā)牌時(shí)是根據(jù)順序輪流分給四個(gè)人 ( 4)排序。將牌發(fā)好之后再根據(jù)排序函數(shù)分別對(duì)四個(gè)人的牌進(jìn)行花色和大小的排序。( 5)輸出。即用 print 函數(shù)將牌輸出。結(jié)束。 程序框圖或流程圖,程序清單與調(diào)用關(guān)系 全部源程序清單 // 撲克 : 定義控制臺(tái)應(yīng)用程序的入口點(diǎn)。 // include includecstdlib includestring include includeiostream using namespace std。 typedef class CARD { public: int flag。 //撲克的類(lèi)型 int value。 //撲克編號(hào) string ASCFlag。 //用 ASCII 碼表示撲克花印 string ASCValue。 //表示撲克符號(hào) }Card。 class pu_ke { public: pu_ke()。 //初始化撲克 void shuffle()。 //洗牌 void deal()。 //撲克分牌 void sort(Card PX[])。 //排序撲克 void colour(Card PX[])。 //給撲克印色 void print()。 //撲克輸出 Card P1[13],P2[13],P3[13],P4[13]。 private: Card P[52]。 Card swap。 }。 pu_ke::pu_ke() //初始化撲克 { int Flags[4]={1, 2, 3,4}。 int Value[13]={1,2,3,4,5,6,7,8,9,10,11,12,13}。 for(int i=0。i13。i++) { P[i].flag = Flags[0]。 P[i].value = Value[i]。 } for(int i=13。i26。i++) { static int temp0=0。 P[i].flag = Flags[1]。 P[i].value = Value[temp0++]。 } for(int i=26。i39。i++) { static int temp1=0。 P[i].flag = Flags[2]。 P[i].value = Value[temp1++]。 } for(int i=39。i52。i++) { static int temp2=0。 P[i].flag = Flags[3]。 P[i].value = Value[temp2++]。 } } void pu_ke::shuffle() //交換下標(biāo)數(shù)組 { int index。 int value。 srand((int)time(0))。 /* 每次發(fā)牌的時(shí)候任意分配待交換的數(shù)據(jù) */ for(index = 0。 index 52。 index ++){ value = rand() % 52。 swap = P[index]。 P[index] = P[value]。 P[value] = swap。 }
點(diǎn)擊復(fù)制文檔內(nèi)容
環(huán)評(píng)公示相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1