暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

SCL编程实例100例-058-扑克牌顺子判断

工控老炮儿 2022-12-27
500

1 | 题目



从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。2-10为数字本身,A为1、J为11、Q为12、K为13,而大小王定义为0,可以看成任意数字,也就是说大小王可以充当任何一张牌来组成顺子



2 | 设计分析



当五张牌中有重复牌(大小王除外)的时候,肯定不能组成顺子;如果没有重复牌,当最大牌减去除大小王外的最小牌大于4时,肯定不能组成顺子;其他情况都可组成顺子。



3 | 创建功能或功能块



创建功能块FB,命名为“AreStraight”。




4 | 定义接口变量



具体接口变量定义见下图:

定义数据类型为整型数的一维数组变量#nums作为随机抽的5张扑克牌。定义数据类型为整型数的一维数组变量#statNums作为重复牌的判断。



5 | 程序代码



编写程序代码。如下图:


关键算法就是要确保没有重复的牌(大小王0除外,而且最多允许有两张),其次是牌中最大值和最小值相差不能大于4。



6 | 代码测试



在循环OB中调用FB-“AreStraight”,调用时会自动创建背景数据块,命名为“InstAreStraight”,该背景数据块可以用来监视和修改数据。转至在线并监控程序。如下图:


抽取五张牌:5、6、7、8、9,结果为TRUE(顺子)。


抽取五张牌:大王、小王、1、2、5,结果为TRUE(顺子)。


抽取五张牌:1、2、3、5、8,结果为FALSE(不是顺子)。



7 | 总结



学习使用FOR循环语句;

学习使用IF条件语句;

学习一维数组的使用方法;

学习组合赋值的使用方法。

- END -

工控老炮儿


分享 | 咨询 | 合作 | 共赢


文章转载自工控老炮儿,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论