给一手牌分类
来源:互联网 发布:mac双语播放器 编辑:程序博客网 时间:2024/05/17 01:54
/*
* 给一手牌分类修改(一).c
*
* Created on: 2016年12月1日
* Author: PC
*/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
* 给一手牌分类修改(一).c
*
* Created on: 2016年12月1日
* Author: PC
*/
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#define NUM_RANKS 13
#define NUM_SUITS 4
#define NUM_CARDS 5
#define NUM_SUITS 4
#define NUM_CARDS 5
/*prototypes */
void read_cards(int num_in_rank[],int num_in_suit[]);
void analyze_hand(int num_in_rank[],int num_in_suit[]);
void print_result(void);
void read_cards(int num_in_rank[],int num_in_suit[]);
void analyze_hand(int num_in_rank[],int num_in_suit[]);
void print_result(void);
/*external variables */
bool straight,flush,four,three;
int pairs; /* can be 0,1,or2 */
int pairs; /* can be 0,1,or2 */
int main(void)
{
int num_in_rank[NUM_RANKS];
int num_in_suit[NUM_SUITS];
for(;;){
read_cards(num_in_rank,num_in_suit);
analyze_hand(num_in_rank,num_in_suit);
print_result();
}
}
void read_cards(int num_in_rank[],int num_in_suit[])
{
bool card_exists[NUM_RANKS][NUM_SUITS];
char ch,rank_ch,suit_ch;
int rank,suit;
bool bad_card;
int cards_read = 0;
for (rank = 0;rank < NUM_RANKS;rank++){
num_in_rank[rank] = 0;
for (suit = 0;suit < NUM_SUITS;suit++)
card_exists[rank][suit]=false;
}
num_in_rank[rank] = 0;
for (suit = 0;suit < NUM_SUITS;suit++)
card_exists[rank][suit]=false;
}
for (suit = 0;suit < NUM_SUITS;suit++)
num_in_suit[suit] = 0;
num_in_suit[suit] = 0;
while (cards_read < NUM_CARDS) {
bad_card = false;
bad_card = false;
printf("enter a card:");
rank_ch = getchar();
switch(rank_ch)
{
case'0': exit(EXIT_SUCCESS);
case'2': rank = 0;break;
case'3': rank = 1;break;
case'4': rank = 2;break;
case'5': rank = 3;break;
case'6': rank = 4;break;
case'7': rank = 5;break;
case'8': rank = 6;break;
case'9': rank = 7;break;
case't':case'T':rank = 8;break;
case'j':case'J':rank = 9;break;
case'q':case'Q':rank = 10;break;
case'k':case'K':rank = 11;break;
case'a':case'A':rank = 12;break;
default: bad_card = true;
}
suit_ch = getchar();
switch (suit_ch)
{
case'c':case'C':suit=0;break;
case'd':case'D':suit=1;break;
case'h':case'H':suit=2;break;
case's':case'S':suit=3;break;
default: bad_card = true;
}
while((ch=getchar())!='\n')
if(ch!=' ')bad_card=true;
switch(rank_ch)
{
case'0': exit(EXIT_SUCCESS);
case'2': rank = 0;break;
case'3': rank = 1;break;
case'4': rank = 2;break;
case'5': rank = 3;break;
case'6': rank = 4;break;
case'7': rank = 5;break;
case'8': rank = 6;break;
case'9': rank = 7;break;
case't':case'T':rank = 8;break;
case'j':case'J':rank = 9;break;
case'q':case'Q':rank = 10;break;
case'k':case'K':rank = 11;break;
case'a':case'A':rank = 12;break;
default: bad_card = true;
}
suit_ch = getchar();
switch (suit_ch)
{
case'c':case'C':suit=0;break;
case'd':case'D':suit=1;break;
case'h':case'H':suit=2;break;
case's':case'S':suit=3;break;
default: bad_card = true;
}
while((ch=getchar())!='\n')
if(ch!=' ')bad_card=true;
if(bad_card)
printf("Bad card;ignored.\n");
else if(card_exists[rank][suit])
printf("Duplicate card;ignored.\n");
else {
num_in_rank[rank]++;
num_in_suit[suit]++;
card_exists[rank][suit]=true;
cards_read++;
}
}
}
void analyze_hand(int num_in_rank[],int num_in_suit[])
{
int num_consec=0;
int rank,suit;
printf("Bad card;ignored.\n");
else if(card_exists[rank][suit])
printf("Duplicate card;ignored.\n");
else {
num_in_rank[rank]++;
num_in_suit[suit]++;
card_exists[rank][suit]=true;
cards_read++;
}
}
}
void analyze_hand(int num_in_rank[],int num_in_suit[])
{
int num_consec=0;
int rank,suit;
straight=false;
flush=false;
four=false;
three=false;
pairs=0;
flush=false;
four=false;
three=false;
pairs=0;
/*check for flush*/
for (suit=0;suit<NUM_SUITS;suit++)
if(num_in_suit[suit] == NUM_CARDS)
flush=true;
/*check for straight*/
rank=0;
while(num_in_rank[rank] == 0)rank++;
for (; rank <NUM_RANKS && num_in_rank[rank] >0;rank++)
num_consec++;
if (num_consec == NUM_CARDS) {
straight = true;
return;
}
/*check for 4-of-a-kind,3-of-a-kind,and pairs */
for (rank = 0; rank < NUM_RANKS;rank++){
if (num_in_rank[rank] == 4) four = true;
if (num_in_rank[rank] == 3) three = true;
if (num_in_rank[rank] == 2) pairs++;
}
}
void print_result(void)
{
if (straight && flush) printf("Straight flush");
else if (four) printf("Four of a kind");
else if (three &&
pairs == 1) printf("Full house");
else if (flush) printf("Flush");
else if (straight) printf("Straight");
else if (three) printf("Three of a kind");
else if (pairs == 2) printf("Two pairs");
else if (pairs == 1) printf("Pair");
else printf("High card");
for (suit=0;suit<NUM_SUITS;suit++)
if(num_in_suit[suit] == NUM_CARDS)
flush=true;
/*check for straight*/
rank=0;
while(num_in_rank[rank] == 0)rank++;
for (; rank <NUM_RANKS && num_in_rank[rank] >0;rank++)
num_consec++;
if (num_consec == NUM_CARDS) {
straight = true;
return;
}
/*check for 4-of-a-kind,3-of-a-kind,and pairs */
for (rank = 0; rank < NUM_RANKS;rank++){
if (num_in_rank[rank] == 4) four = true;
if (num_in_rank[rank] == 3) three = true;
if (num_in_rank[rank] == 2) pairs++;
}
}
void print_result(void)
{
if (straight && flush) printf("Straight flush");
else if (four) printf("Four of a kind");
else if (three &&
pairs == 1) printf("Full house");
else if (flush) printf("Flush");
else if (straight) printf("Straight");
else if (three) printf("Three of a kind");
else if (pairs == 2) printf("Two pairs");
else if (pairs == 1) printf("Pair");
else printf("High card");
printf("\n\n");
}
0 0
- 给一手牌分类
- 给导师分分类
- 如何给图像分类
- 自己动手写贝叶斯分类器给图书分类
- 我给后代的分类
- 如何给 Toto 加上分类?
- 给分类增加一个属性
- ecshop给分类上传图片
- 如何给文档管理分类
- 给分类设置Meta Keywords
- 做好一手菜真难啊
- 一手写不出大市场
- 一手棋与一口气
- 给大家漏一手本人亲自精心撰写的通用ajax框架,完全兼容 IE FireFox各个版本!(附完整源码及完整范例)
- 给大家漏一手本人亲自精心撰写的通用ajax框架,完全兼容 IE FireFox各个版本!(附完整源码及完整范例)
- OC之给NSString增加分类(分类的特点)
- 原来给东西分类也是一种能力
- 推荐给大家一个分类信息源码
- 开源仓库
- LeetCode #9 - Palindrome Number - Easy
- insmod: ERROR: could not insert module xxx.ko: Unkown symbol in module
- Java关键字assert
- C#\WPF高仿QQ音乐V12.8界面篇《2》
- 给一手牌分类
- 架构设计:系统存储(10)——MySQL简单主从方案及暴露的问题
- C++多线程
- Kali Linux下安装VMware
- Python Code规范PEP8
- 关于解决js页面中文乱码问题
- 创建 userSettings/Microsoft.SqlServer.Configuration.LandingPage.Properties.Settings 的配置节处理程序时出错: 未能加载文
- Python中常见运算符重载方法
- java -version找不到系统文件java.exe问题解决