1 | 题目
要判断一个整数里有没有重复的数字,就比如说给定一个整数 6689 吧,这里面 6 出现了 2 次,8 出现了 1 次,9 也出现了 1 次,这样就能判定它存在重复数字啦。
2 | 设计分析
咱来定义一个有 10 个元素的一维数组,从 #statDigitNums[0] 一直到 #statDigitNums[9] 这些索引,分别就代表着 0 到 9 这 10 个数字。在这个数组里呢,保存着每个数字出现的次数。比如说:#statDigitNums[6]=2 ,这就表示数字 6 出现了 2 次。要是有重复的数字,那 #statDigitNums 这个数组里肯定会有一个元素的值是大于 1 的,不过代码有错误,得把等于去掉。
3 | 创建功能或功能块
创建一个功能块 FB ,给它起个名字叫“RepetitiveNumbers”。
4 | 定义接口变量
具体接口变量定义见下图:
咱定义一个变量叫 #areRepetitiveNumbersQ ,用它来输出判断的结果。要是结果是 TRUE ,就表示存在重复数字;要是结果是 FALSE ,就表示不存在重复数字。另外再定义一个数组叫 #statDigitNums ,用它来存储 0 到 9 这些数字出现的次数。
5 | 程序代码
编写程序代码。如下图:
要是只是判断有没有重复数字,而不需要知道每个数字重复的次数,那就得把 RETURN 的注释给取消掉。
6 | 代码测试
在循环 OB 里调用 FB - “RepetitiveNumbers”,调用的时候会自动创建一个背景数据块,给它起名叫“InstRepetitiveNumbers”。这个背景数据块能用来监视和修改数据。然后转到在线,监控程序。如下图:
输入一个长整数 15928671860 ,很明显这里面有重复的数字。其中 3 和 4 一次都没出现,1 出现了 2 次,1、6 和 8 各自都出现了 2 次,剩下的数字都只出现了 1 次。
7 | 总结
学习怎么用 FOR 循环语句;
学习怎么用 IF..ELSE 语句;
学习怎么用 REPEAT 循环语句;
学习 RETURN 语句能起到啥作用。
SCL编程实例100例-027-判断一个整数中是否出现重复数字 PLC论坛-全力打造可编程控制器专业技术论坛 -
SCL编程实例100例-027-判断一个整数中是否出现重复数字
http://bbs.plcjs.com/forum.php?mod=viewthread&tid=503002&fromuid=17
(出处: PLC论坛-全力打造可编程控制器专业技术论坛)