标题:为什么会不能运行出结果啊??求修改啊???
只看楼主
smile康师傅
Rank: 2
等 级:论坛游民
帖 子:34
专家分:53
注 册:2012-6-10
结帖率:71.43%
已结贴  问题点数:10 回复次数:4 
为什么会不能运行出结果啊??求修改啊???
#include<iostream>
#include<cstdlib>
using namespace std;
const int size=54;
struct Card{
    Card(){flag=false;num=0;}
    bool flag;
    int num;//牌的大小--------------整形数据比较容易比较
};
class Deck
{
    public:
        Deck():n(3){}
        void riffle();//洗牌;
        void deal();//发牌;
        void display(Card [],int n);//显示玩牌者手中的牌
        Card* getcard(){Card*p;p=card;return p;}//返回数组card[size];
        bool judgecard();//判断数组中的所有数据均被赋值过
    private:
        Card card[size];
        const int n;//玩牌人数
};
Card farmer1[17];//农民
Card farmer2[17];//农民
Card landlord[20];//地主
bool judge(int num);//判断数字是否大于十
void Deck::riffle()
{
    int i,j,k;
L1:
    for(i=3;i<=17;i++)
    {
        if(i==16||i==17)//区分大小王
        {
            k=rand()%size;
            card[k].num=i;
            card[k].flag=true;
        }
        else
        {
            for(j=1;j<=4;j++)//4个3,4个4,4个5。。。
            {
                head:
                k=rand()%size;
                if(card[k].flag==true)
                    goto head;
                else
                {
                    card[k].num=i;
                    card[k].flag=true;
                }
            }
        }
    }
    if(!judgecard())//-------------------------不调用这个语句怎样确认所有的牌都被赋值过啊????
        goto L1;
}
void Deck::deal()//发牌
{
    int i,j;
    for(i=j=0;i<size;i++,j++)
    {
        if(j<17)//按一定的顺序发牌
        {
            farmer1[j]=card[i];
            farmer2[j]=card[++i];
            landlord[j]=card[++i];
        }
        else
            landlord[j]=card[i];//最后三张牌
    }
}
void Deck::display(Card farmer[],int n)//显示玩牌者手中的牌
{
    int i;
    for(i=0;i<n;i++)
    {
        if(judge(farmer[i].num))
            cout<<farmer[i].num<<'\t';
        else
        {
            if(farmer[i].num==11)
                cout<<'J'<<'\t';
            else if(farmer[i].num==12)
                cout<<'Q'<<'\t';
            else if(farmer[i].num==13)
                cout<<'K'<<'\t';
            else if(farmer[i].num==14)
                cout<<'A'<<'\t';
            else if(farmer[i].num==15)
                cout<<'2'<<'\t';
            else if(farmer[i].num==16)//小王
                cout<<"jk"<<'\t';
            else
                cout<<"Jk"<<'\t';//大王
        }
    }
}
bool judge(int n)//判断数字是否大于十
{
    if(n<=10)
        return true;
    else
        return false;
}
bool Deck::judgecard()
{
    int i;
    for(i=0;i<size;i++)
    {
        if(card[i].flag==true)
            continue;
        else
            break;
    }
    if(i>=size)
        return true;
    else
        return false;
}
void main()
{
    Deck deck;
    deck.riffle();
    deck.deal();
    cout<<"*********洗牌后的结果为********:\n";
    deck.display(deck.getcard(),size);
    cout<<"\n*********发牌后********:\n";
    cout<<"\nfarmer1:\n";
    deck.display(farmer1,17);
    cout<<"\nfarmer2:\n";
    deck.display(farmer2,17);
    cout<<"\nlandlord:\n";
    deck.display(landlord,20);
}
为什么程序执行不出来结果啊????
搜索更多相关主题的帖子: public include display void 
2012-12-09 01:50
w527705090
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:11
帖 子:441
专家分:1882
注 册:2011-6-28
得分:3 
帮顶啦 !!这个问题我回答不了。。。

有心者,千方百计;无心者,千难万难。
2012-12-09 18:28
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
得分:5 
1
#include<iostream>
#include<time.h>
//#include<cstdlib>
using namespace std;
const int size=54;
struct Card{
    Card(){flag=false;num=0;}
    bool flag;
    int num;//牌的大小--------------整形数据比较容易比较
};
class Deck
{
    public:
        Deck():n(3){}
        void riffle();//洗牌;
        void deal();//发牌;
        void display(Card [],int n);//显示玩牌者手中的牌
        Card* getcard(){Card*p;p=card;return p;}//返回数组card[size];
        bool judgecard();//判断数组中的所有数据均被赋值过
    private:
        Card card[size];
        const int n;//玩牌人数
};
Card farmer1[17];//农民
Card farmer2[17];//农民
Card landlord[20];//地主
bool judge(int num);//判断数字是否大于十
void Deck::riffle()
{
     srand(time(NULL));

    int i,j,k;
//L1:
    for(i=3;i<=17;i++)
    {
        if(i==16||i==17)//区分大小王
        {
           L1:
            k=rand()%size;
           if(card[k].flag==true)
               goto L1;//防止大小王占用前面产生的牌。
            card[k].num=i;
            card[k].flag=true;
        }
        else
        {
            for(j=1;j<=4;j++)//4个3,4个4,4个5。。。/*还有1--2个0的问题应该在此解决
            {
                head:
                k=rand()%size;
                if(card[k].flag==true)
                    goto head;
                else
                {
                    card[k].num=i;
                    card[k].flag=true;               
               }
            }
        }
    }
   // if(judgecard())//-------------------------不调用这个语句怎样确认所有的牌都被赋值过啊????
       // goto L1;
}
void Deck::deal()//发牌
{
    int i,j;
    for(i=j=0;i<size;i++,j++)
    {
        if(j<17)//按一定的顺序发牌
        {
            farmer1[j]=card[i];
            farmer2[j]=card[++i];
            landlord[j]=card[++i];
        }
        else
            landlord[j]=card[i];//最后三张牌
    }
}
void Deck::display(Card farmer[],int n)//显示玩牌者手中的牌
{
    int i;
    for(i=0;i<n;i++)
    {
        if(judge(farmer[i].num))
            cout<<farmer[i].num<<'\t';
        else
        {
            if(farmer[i].num==11)
                cout<<'J'<<'\t';
            else if(farmer[i].num==12)
                cout<<'Q'<<'\t';
            else if(farmer[i].num==13)
                cout<<'K'<<'\t';
            else if(farmer[i].num==14)
                cout<<'A'<<'\t';
            else if(farmer[i].num==15)
                cout<<'2'<<'\t';
            else if(farmer[i].num==16)//小王
                cout<<"jk"<<'\t';
            else
                cout<<"Jk"<<'\t';//大王
        }
    }
}
bool judge(int n)//判断数字是否大于十
{
    if(n<=10)
        return true;
    else
        return false;
}
/*bool Deck::judgecard()
{
    int i;
    for(i=0;i<size;i++)
    {
        if(card[i].flag==true)
            continue;
        else
            break;
    }
    if(i>=size)
        return true;
    else
        return false;
}*/
void main()
{
    Deck deck;
    deck.riffle();
    deck.deal();
    cout<<"*********洗牌后的结果为********:\n";
    deck.display(deck.getcard(),size);
    cout<<"\n*********发牌后********:\n";
    cout<<"\nfarmer1:\n";
    deck.display(farmer1,17);
    cout<<"\nfarmer2:\n";
    deck.display(farmer2,17);
    cout<<"\nlandlord:\n";
    deck.display(landlord,20);
}


[ 本帖最后由 qunxingw 于 2012-12-13 23:02 编辑 ]

www.qunxingw.wang
2012-12-09 20:07
刘宇
Rank: 2
等 级:论坛游民
帖 子:21
专家分:16
注 册:2012-12-2
得分:2 
帮忙顶一下,大神贴。。。
2012-12-09 23:17
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
得分:0 
#include<iostream>
#include<time.h>
//#include<cstdlib>
using namespace std;
const int size=54;
struct Card{
    Card(){flag=false;num=0;}
    bool flag;
    int num;//牌的大小--------------整形数据比较容易比较
};
class Deck
{
    public:
        Deck():n(3){}
        void riffle();//洗牌;
        void deal();//发牌;
        void display(Card [],int n);//显示玩牌者手中的牌
        Card* getcard(){Card*p;p=card;return p;}//返回数组card[size];
        bool judgecard();//判断数组中的所有数据均被赋值过
    private:
        Card card[size];
        const int n;//玩牌人数
};
Card farmer1[17];//农民
Card farmer2[17];//农民
Card landlord[20];//地主
bool judge(int num);//判断数字是否大于十
void Deck::riffle()
{
     srand(time(NULL));

    int i,j,k;
//L1:
    for(i=3;i<=17;i++)
    {
        if(i==16||i==17)//区分大小王
        {
           L1:
            k=rand()%size;
           if(card[k].flag==true)
               goto L1;//防止大小王占用前面产生的牌。
            card[k].num=i;
            card[k].flag=true;
        }
        else
        {
            for(j=1;j<=4;j++)//4个3,4个4,4个5。。。/*还有1--2个0的问题应该在此解决
            {
                head:
                k=rand()%size;
                if(card[k].flag==true)
                    goto head;
                else
                {
                    card[k].num=i;
                    card[k].flag=true;               
               }
            }
        }
    }
   // if(judgecard())//-------------------------不调用这个语句怎样确认所有的牌都被赋值过啊????
       // goto L1;
}
void Deck::deal()//发牌
{
    int i,j;
    for(i=j=0;i<size;i++,j++)
    {
        if(j<17)//按一定的顺序发牌
        {
            farmer1[j]=card[i];
            farmer2[j]=card[++i];
            landlord[j]=card[++i];
        }
        else
            landlord[j]=card[i];//最后三张牌
    }
}
void Deck::display(Card farmer[],int n)//显示玩牌者手中的牌
{
    int i;
    for(i=0;i<n;i++)
    {
        if(judge(farmer[i].num))
            cout<<farmer[i].num<<'\t';
        else
        {
            if(farmer[i].num==11)
                cout<<'J'<<'\t';
            else if(farmer[i].num==12)
                cout<<'Q'<<'\t';
            else if(farmer[i].num==13)
                cout<<'K'<<'\t';
            else if(farmer[i].num==14)
                cout<<'A'<<'\t';
            else if(farmer[i].num==15)
                cout<<'2'<<'\t';
            else if(farmer[i].num==16)//小王
                cout<<"jk"<<'\t';
            else
                cout<<"Jk"<<'\t';//大王
        }
    }
}
bool judge(int n)//判断数字是否大于十
{
    if(n<=10)
        return true;
    else
        return false;
}
/*bool Deck::judgecard()
{
    int i;
    for(i=0;i<size;i++)
    {
        if(card[i].flag==true)
            continue;
        else
            break;
    }
    if(i>=size)
        return true;
    else
        return false;
}*/
void main()
{
    Deck deck;
    deck.riffle();
    deck.deal();
    cout<<"*********洗牌后的结果为********:\n";
    deck.display(deck.getcard(),size);
    cout<<"\n*********发牌后********:\n";
    cout<<"\nfarmer1:\n";
    deck.display(farmer1,17);
    cout<<"\nfarmer2:\n";
    deck.display(farmer2,17);
    cout<<"\nlandlord:\n";
    deck.display(landlord,20);
}

www.qunxingw.wang
2012-12-13 23:06



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-390248-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024005 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved