博图SCL 语言如何将数组中指定某个数据插队前置,被插队依次后移

例如一组数[ 4 , 8 , 1 , 3 ,5 ,9 ,6 ]  ,现在给出一个数5,发现里面已经有了,那么就把5前置到左边第一位。即给个N,如果N在数组中存在,就前置到最前第一位。SCL如何写?

最佳答案

这里假设你这个数组里没有重复的数字,可以按下面的程序编写实现

FOR #i := 0 TO 6 DO
    IF #Array[#i] = #N THEN
        IF #i = 0 THEN      //当第一位就是你N时,直接退出循环;
            EXIT;
        ELSE
            FOR #j := #i TO 1 DO  //如果不是第一个是N,则需要等于N的那个数组元素提到第一位,并且把其它向后移;
                #Array[#j] := #Array[#j – 1];
            END_FOR;
            #Array[0] := #N;
        END_IF;
    END_IF;
END_FOR;

提问者对于答案的评价:
我把这个嵌套进去后,无法进行数据入栈,指针数直接为21。正常时栈内是全部位零,应该是上升沿触每发一下新写进去一个不为零的数,如果栈内已经有这个数了,那就把它前置到第一位,没有的话就写排到现有的以后一个不为零的数后面。大哥  有空的话你加我QQ 2300023577   帮我看看吧

原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc371651.html

发表评论

登录后才能评论