标题:扑克牌排序问题
取消只看楼主
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
结帖率:83.33%
 问题点数:0 回复次数:6 
扑克牌排序问题
试题一:
有6副带不同底色的扑克牌, 其底色分别为红、绿、蓝、白、粉、紫6种颜色. 现要求编写程序对这6副牌进行排序, 排序规则及做题要求如下:

排序规则:
排序优先度为:
1. 属性优先度:  点数 > 底色 > 花色 (即: 在排序时, “点数”要比“颜色”和“花色”重要, 而“颜色”又比“花色”重要);
2. 点数优先度:  3 > 4 > 5 > 6 > 7 > 8 > 9 > 10 > J > Q > K > A > 2 > 小王 > 大王
3. 底色优先度:  红 > 绿 > 蓝 > 白 > 粉 > 紫
4. 花色优先度:  红心 > 黑桃 > 方块 > 梅花

要求:
1. 编写合理的数据结构表示每张牌, 并说明数据结构中每个域的含意; (5分)
2. 编写用来产生供排序使用的初始排列的6副牌(可以是任意顺序)的函数, 并对关键性语句进行必要的注释; (25分)
3. 编写对6副牌进行排序的函数, 并在适当位置进行注释, 以增强程序的可读性. (60分)
4. 编写主函数, 调用上述函数对6副牌进行排序. (5分)
5. 将排序前和排序后的扑克牌的排序情况, 分别输出到源程序所在目录(或称文件夹)中的两个文本文件中 (排序前的牌放在“Before.txt”中, 排序后的牌放在“After.txt”中); (5分)
搜索更多相关主题的帖子: 扑克牌 梅花 底色 花色 点数 
2008-03-29 15:36
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
得分:0 
跟上呀!
2008-03-29 17:35
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
得分:0 
random?C中有这样的函数?
2008-03-29 18:08
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
得分:0 
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
enum dotnum{3,4,5,6,7,8,9,10,J,Q,K,A,2,小王,大王};
enum dise{红,绿,蓝,白,粉,紫};
enum huase{红心,黑桃,方块,梅花};
void creatno();

struct card
{
enum dotnum a;
enum dise b;
enum huase c;
} cards[330];


void creatno()
{
    int i;
    for(i=0;i<324;i++)
    { cards[i].a=(enum dotnum)(rand()%13+1);
      cards[i].b=(enum dise)(rand()%6+1);
      cards[i].c=(enum huase)(rand()%5+1);
    }
    ofstream outfile("before.txt");
    if(!outfile)
    {cerr<<"can't open file."<<endl;
    exit(1);
    }
    for(i=0;i<324;i++)
    {
        outfile<<cards[i].a<<"    ";
        outfile<<cards[i].b<<"    ";
        outfile<<cards[i].c<<"    ";
        outfile<<endl<<endl;
    }
}

void main()
{
    creatno();
}
2008-03-29 18:44
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
得分:0 
枚举类型要怎么用啊?
上述这样为什么会错了?
2008-03-29 18:44
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
得分:0 
谢谢你,楼上的。能否帮忙写个函数实现第二问?
改成如下,还是不知道该怎么处理!
#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
enum dotnum{three,four,five,six,seven,eight,nine,ten,J,Q,K,A,two,sking,bking};
enum dise{red,green,blue,white,pink,purple};
enum huase{hongxi,heitiao,fangkuai,meihua};
void creatno();

struct card
{
enum dotnum a;
enum dise b;
enum huase c;
} cards[330];


void creatno()
{
    int i;
    for(i=0;i<324;i++)
    { cards[i].a=(enum dotnum)(rand()%13+1);
      cards[i].b=(enum dise)(rand()%6+1);
      cards[i].c=(enum huase)(rand()%5+1);
    }
    ofstream outfile("before.txt");
    if(!outfile)
    {cerr<<"can't open file."<<endl;
    exit(1);
    }
    for(i=0;i<324;i++)
    {
        outfile<<cards[i].a<<"    ";
        outfile<<cards[i].b<<"    ";
        outfile<<cards[i].c<<"    ";
        outfile<<endl<<endl;
    }
}

void main()
{
    creatno();
}
2008-03-29 19:08
yqiong
Rank: 1
等 级:新手上路
帖 子:315
专家分:0
注 册:2007-7-4
得分:0 
josen0205
^_^谢谢你!太佩服你了!太高深了,我都看不懂呢:-(

1.这个函数int GetCards(struct Card *CArray) 对我来说很难理解。其中
 srand((unsigned)time(NULL));
    r = rand();
    m = r%325;
    n = r%324;
看不懂,什么意思呀?

2.还有下面这个也不明白
        memset(tBcolor, 0, sizeof(tBcolor));
        memset(tGrade, 0, sizeof(tGrade));
        memset(tColor, 0, sizeof(tColor));
2008-03-30 15:32



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




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

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