c++ 扑克牌排序

来源:百度知道 编辑:UC知道 时间:2024/05/23 10:16:19
1. 用字符串代表一张牌,1--10,j,q,k,代表数值,52张牌。
h(红心),s(黑桃),d(方块),c(梅花) 代表花色。
例如 黑桃5就是 “s5”, 红心K 就是 “hk”;
2. 52张牌,四个人,每人13张。
按照梅方桃心(c d s h)的花色顺序排列;
按照 1--10,j,q,k 排序。
具体可参照红心大战中牌的排序。
3. 已有的那种二元数组和52个数组排列法不太适用,
因为需要和别的class 配合使用。

大概等两天左右,请大家帮忙,多谢。
这52张牌由已经由另一个class生成,名字的是“s8” “h2”“cq”这样的。
这个排序函数,是按输入的13张牌的名字排序。
如果需要转换名字的格式,希望能给个函数。

用 strcmp()
for(int a=1;a<14;a++)
{
for (int b=1;b<14;b++)
{
if ( strcmp( (s+a)->getcardname(),(s+b)->getcardname()) <0 ) { strcpy(tem,(s+a)->getcardname());
(s+a)->setcardname( (s+b)->getcardname() );
(s+b)->setcardname( tem);

}
}
}

#include <iostream.h>
#include <fstream.h>
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
void sort(struct card cards[]);
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[324],showcard;

void creatno()
{
int i;
for(i=0;i<324;i++)
{