当前位置: 首页 > news >正文

【SCL】博图——先入先出排序法

使用博图SCL语言来实现先入先出排序



前言

使用SCL完成一个先入先出排序

具体要求:最先输入的一个数值,最先输出出来,下面的数自动向前填充;

注:这里可能有两种理解:一是第一个输入的第一个出来,二是最后一个输入的第一个出来;

这里我们都来实现一下。



 数组变量建立

 记得在主程序调用函数块 





编写实现 

1.我们先要获取输入进来的值,然后存放到一个数组中;

首先判断输入的值是否大于0,然后进入for循环(这里以0..5为例),在for循环中判断数组中哪一个为0,找到后将输入值放在为0的数组中,然后清零退出循环。 

第1步存放输入值就完成了。 

IF  #输入值 > 0 THENFOR #N := 0 TO 5 DOIF #SC[#N] = 0 THEN#SC[#N] := #输入值;#输入值 := 0;EXIT;END_IF;END_FOR;
END_IF;

2.第1个存进来的数第1个出来

 输出按钮控制通断,for循环来遍历数组,如果找到数组不等于0(那么就是为真的),就将里面的值存放在一个变量中,然后将数组的值和按钮清零退出循环;

这里我们就找到了第一个存进来的数值。

IF #输出按钮 THENFOR #S := 0 TO 5  DOIF #SC[#S] <> 0 THEN#输出值 := #SC[#S];#SC[#S] := 0;#输出按钮 := 0;EXIT;END_IF;END_FOR;
END_IF;

 3.下面数组自动向前填充

 我们输出过之后,数组中就为0了,那怎么才能补上去呢?

这里我们用for循环进行一个判断,判断里面是否有一个为0,如果为0就将下一个数组的数补充上去,以此类推,直至填充完成。

注:这里I+1会导致数组越界,所以上面的数组数量要再加1才可以) 

FOR #I := 0 TO 5 DOIF #SC[#I] = 0  & #SC[#I+1]<>0  THEN#SC[#I] := #SC[#I + 1];#SC[#I + 1] := 0;END_IF;
END_FOR;

4.触摸屏演示



5.这里我们在看一下第2种理解,最后输入的最先输出 

 这里我们只要将输出时的循环顺序修改为逆序就可以了,S从5到1,来开始循环。

 以上就是先入先出排序法的全部内容了。




http://www.lryc.cn/news/43285.html

相关文章:

  • OSPF----特殊区域
  • JVM-类加载
  • 超详细讲解C语言文件操作!!
  • linxu学习之进程
  • 蓝桥杯真题2
  • PWM互补输出,以及死区时间计算
  • 基于深度学习的海洋动物检测系统(Python+YOLOv5+清新界面)
  • C# 计算方差
  • HJZS电源监视继电器HJZS-E202 AC220V
  • dolphinscheduler 2.0.6 资源中心改造方案二:通过NFS挂载共享目录
  • 基于集成学习的用户流失预测并利用shap进行特征解释
  • 【Java版oj 】 day17杨辉三角形的变形、计算某字符出现次数
  • 智能驾驶芯片赛道混战:如何看待5类玩家的竞争格局?
  • vue antd table表格的增删改查(三)input输入框根据关键字模糊查询【后台管理系统 使用filter与indexOf嵌套】
  • 【计组】性能指标——速度
  • 【PC自动化测试-4】inspect.exe 详解
  • 比肩ChatGPT的国产AI:文心一言——有话说
  • 【第13届蓝桥杯】C/C++组B组省赛题目+详解
  • STM32 KEI 调试新手注意事项
  • Windows权限提升—令牌窃取、UAC提权、进程注入等提权
  • 不做孔乙己也不做骆驼祥子
  • ChatGPT原理解析
  • 常用算法实现【必会】:sort/bfs/dfs
  • 瑟瑟发抖吧——用了这款软件,我的开发效率提升了50%
  • 笔记本只使用Linux是什么体验?
  • pipeline业务发布
  • 【巨人的肩膀】JAVA面试总结(七)
  • Python满屏表白代码
  • Spring学习流程介绍
  • 杭银消金基于 Apache Doris 的统一数据查询网关改造