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

扑克牌大小 速来帮忙,求程式码

灵夕920329 发布于 2013-01-07 19:27, 1775 次点击
問題描述:
撲克牌的遊戲有很多種,像是大老二、撿紅點等。然而,現在您要參與的是比大小遊戲,每張牌各有其花色和數字,大小比較主要以花色為主,黑桃 > 紅心 > 方塊 > 梅花;倘若花色相同時,則比較數字,1(A)最大,然後13(K),12(Q),11(J),10,9...2。

輸入說明:

第一列的整數,代表撲克牌的疊數,其後有若干列,每列即為一疊牌的內容,每張牌分別以英文、數字作表示,其中 S 代表黑桃、 H 代表紅心、 D 代表方塊、 C 代表梅花。每筆資料分別以空白隔開。

輸出說明:

印出由大到小排序過後的撲克牌。一行是一 疊 牌,每張牌以空白隔開。

範例:

Sample Input         Sample Output
 
5                                 
H5 D4 S2 C13         S2 H5 D4 C13
S1 C9 C5 H6 H1 D3    S1 H1 H6 D3 C9 C5   
D8 S3 D10 C12 H7     S3 H7 D10 D8 C12   
H6 S3                S3 H6   
C5 D11 S1            S1 D11 C5
4 回复
#2
w5277050902013-01-07 22:26
你直接求是不对的。。。
#3
azzbcc2013-01-08 01:09
程序代码:
typedef struct data
{
    int number;
    char ch;
}data;
int compare(data a, data b)
{    //判断a < b ?
    if (a.ch == b.ch)
        return (a.number+11)%13 < (b.number+11)%13;
    return a.ch < b.ch;
}
#4
rjsp2013-01-08 08:21
回复 3楼 azzbcc
思路真不错,还可以将花色去掉
牌变为数字:如你说的那样(n+11)%13,然后再加上花色(C为0,D为13,H为26,S为39)
数字变为牌:花色是x/13(0为C,1为D,H为2,S为3),牌面是 (x%13+2)%13
#5
不玩虚的2013-01-08 19:13
支持帮顶啊!
1