注册 登录
编程论坛 C++教室

一个小小的结构体问题??——改来改去都跟书的的例题一样了还是不行

洪溪 发布于 2010-11-22 12:31, 663 次点击
#include <iostream>
using namespace std;
struct BitCards
{
    unsigned face : 4;
    unsigned suit : 2;
    unsigned color :1;
   
};//定义一张牌

class DeckOfCards
{
public:
    DecdOfCards();/*初始化一副牌*/
    void shuffle();//洗牌函数
    void deal();/*发牌小函数*/
private:
    BitCards cards[52];/*定义52张牌*/

};


DeckOfCards::DecdOfCards()
 {
     for( int i=0;i<52;i++)
     {
         cards[i].face=i%13;
        cards[i].suit=i/13;
         cards[i].color=i/26;
        cout<<"kan"<<cards[i].face;
     }
 }

 void DeckOfCards::shuffle()
 {
     for(int i=0; i<52; i++)
     {
         int j=rand()%52;
        BitCards temp;
         temp=cards[j];
        cards[j]=cards[i];
         cards[i]=temp;
     }
 }

void DeckOfCards::deal()
{
    for(int i=0;i<52;i++)
    {
        cout<<"\t\t"<<cards[i].face<<" of "
            <<cards[i].suit<<"\t\t";
        if(i%2==0)
            cout<<endl;
    }
}

void main()
{
    DeckOfCards test;
//     test.shuffle();
//     test.deal();
}
6 回复
#2
kittel2010-11-22 14:26
看起来怎么乱七八糟的?。。
#3
2010-11-22 21:02
void DeckOfCards::shuffle()
{
     for(int i=0; i<52; i++)
     {
         int j=rand()%52;
        BitCards temp;
         temp=cards[j];
        cards[j]=cards[i];
         cards[i]=temp;
     }
}



你这个随即函数 最好前边加个随即种子   而且随即牌的方法也不象你这样啊


应该是把随即出的数和最后一个进行交换   这样就可以保证每次随即的都是不同的数



不知道  楼主现在程序有什么问题???我没拿调试调   但看你的逻辑好像没什么问题啊
#4
qkhhss2010-11-24 12:29
你的构造函数与类名都不一样,当然出错了.
#5
洪溪2010-11-24 22:17
回复 4楼 qkhhss
  哈哈!!没错  真是太粗心了 谢谢你伙计!!
#6
洪溪2010-11-24 22:23
回复 3楼 cacker
逻辑确实没错误  是构造函数的名字搞错了    你说的没错发的牌都一样   应该需要一个种子  谢谢你大侠
#7
洪溪2010-11-24 22:24
回复 2楼 kittel
我没感觉啊
1