回复:数组查重

已锁定

xuxiaoxue

  • 帖子

    1141
  • 精华

    0
  • 被关注

    2

论坛等级:至圣

注册时间:2017-11-27

钻石 钻石 如何晋级?

发布于 2025-03-27 11:35:34

2楼

VAR

    // 定义历史数据数组,大小为10

    DataArray: ARRAY[1..10] OF INT; 

    // 保存上一次的A值,初始值根据实际情况调整

    PreviousA: INT := 0; 

    // 重复标志,1表示存在重复

    DuplicateFlag: BOOL; 

    // 记录已存储的数据数量,最大为10

    Count: INT := 0; 

    // 循环变量

    i: INT; 

END_VAR


// 检测A的值是否发生变化

IF A <> PreviousA THEN

    // 检查数组中是否存在重复值

    DuplicateFlag := FALSE;

    FOR i := 1 TO Count DO

        IF DataArray[i] = A THEN

            DuplicateFlag := TRUE;

            EXIT; // 发现重复,立即退出循环

        END_IF;

    END_FOR;

    

    // 插入新值到数组头部并移位

    IF Count < 10 THEN

        Count := Count + 1; // 数组未满时增加计数

    END_IF;

    

    // 从后往前移位,腾出第一个位置

    FOR i := Count DOWNTO 2 DO

        DataArray[i] := DataArray[i - 1];

    END_FOR;

    DataArray[1] := A; // 存入新值

    

    PreviousA := A; // 更新PreviousA为当前值

END_IF;


// 输出DuplicateFlag,1表示存在重复


努力向上
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有11119条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。