扑克牌中随机抽5张,判断是否为顺子

该博客介绍了一个用于判断扑克牌是否为顺子的C++程序。程序处理了包括大小王W作为万能牌的情况,允许W替代任意数字,并特别处理了10的转换。通过对输入的字符串进行解析并排序,最终判断五张牌是否构成顺子。

扑克牌中随机抽5张,判断是否为顺子,

大小王W可以代替任意数

2~10;A=1;J=11;Q=12;K=13

(难点:针对10的处理)

#include<iostream>
using namespace std;
int main()
{
	int b[5] = { 0 }, k = 0;
	string a;//因为10没办法用char型输入,只能用字符串
	for (int i = 0; i < 5; i++) {//输入五张牌
		cin >> a;

		//将输入的字符串转换成相应的数字存放在b数组中
		if (a[0] >= '2' && a[0] <= '9') b[i] = a[0] - 48;//通过ASCⅡ码值进行转换为整型数字
		else if (a[0] == '1' && a[1] == '0') b[i] = 10;
		else if (a[0] == 'A') b[i] = 1;
		else if (a[0] == 'J') b[i] = 11;
		else if (a[0] == 'Q')  b[i] = 12;
		else if (a[0] == 'K')  b[i] = 13;
		else if (a[0] == 'W') { k++; b[i] = -i; }//记录W的个数,并使b[i]=-i,是为了避免排序时出现错误判断

		//将b数组进行排序
		if (i > 0)
			for (int j = i; j > 0; j--) {
				if (b[j] == b[j - 1]) {//存在相同的数,不是顺子,直接输出结果
					cout << "bu shi" << endl;
					return 0;//终止程序
				}
				if (b[j] < b[j - 1]) {//从小到大进行排序
					int t = b[j];
					b[j] = b[j - 1];
					b[j - 1] = t;
				}
			}
	}
	//五张牌是顺子则最大的牌会比最小的牌大4,考虑W的存在所以可以小于4
	if (b[4] - b[k] <= 4||k == 5)//因为输入W时都为负数,存放在0~k-1的区间,所以k位置为输入的最小字
		cout << "shi" << endl;
	else
		cout << "bu shi" << endl;
	return 0;
}

(感觉写的比较繁琐)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值