数组内相同值的查找及数组优先级重新排序

已锁定

slitter

  • 帖子

    32
  • 精华

    0
  • 被关注

    1

论坛等级:游士

注册时间:2004-10-27

白金 白金 如何晋级?

数组内相同值的查找及数组优先级重新排序

418

0

2024-03-08 16:10:14

展开查看
引用自找答案,问题ID:303778

第一步:如何找出相同的数值,并找出对应的索引值。生成一个新的数组
第二步:根据第一步得到的数组,并根据事先定义好的优先级,对数组重新排序。
以上我觉得比较复杂,请尽量给出简单的程序说明,谢谢!

提问者:slitter


大宝朱林森 回答道:

定义下标范围相同的四个数组。
FC 数据定义及代码如图。
主要代码:
//冒泡排序
#数组下标下限 := LOWER_BOUND(ARR := #IN_ARRAY, DIM := 1);
#数组下标上限 := UPPER_BOUND(ARR := #IN_ARRAY, DIM := 1);
FOR #I := #数组下标下限 TO #数组下标上限 - 1 DO
    FOR #J := #I + 1 TO #数组下标上限 DO
        IF #IN_ARRAY[#I]> #IN_ARRAY[#J] THEN
            #数据交换 := #IN_ARRAY[#I];
            #IN_ARRAY[#I] := #IN_ARRAY[#J];
            #IN_ARRAY[#J] := #数据交换;
            //索引交换
            #数据交换 := #IN_ARRAY_INDEX[#I];
            #IN_ARRAY_INDEX[#I] := #IN_ARRAY_INDEX[#J];
            #IN_ARRAY_INDEX[#J] := #数据交换;
        END_IF;
    END_FOR;
END_FOR;
//下面整理数据
#整理 :=#数组下标下限;
FOR #I := #数组下标下限 + 1 TO #数组下标上限 - 1 DO
    IF #IN_ARRAY[#I] = #IN_ARRAY[#I+1] THEN
        #OUT_ARRAY[#整理] := #IN_ARRAY[#I];
        #OUT_ARRAY_IINDEX[#整理] :=  #IN_ARRAY_INDEX[#I];
        #OUT_ARRAY[#整理+1] := #IN_ARRAY[#I+1];
        #OUT_ARRAY_IINDEX[#整理 + 1] := #IN_ARRAY_INDEX[#I + 1];
        #整理 := #整理 + 1;
    END_IF; ;
END_FOR;

还有2人在找答案上回答了该问题,查看全部>
大宝,能解释一下你的程序吗?这4个数组变化是什么规律?我把你的程序抄了下来,也仿真了一下,没看明白!另外你说的下标是不是就是我建立的数组元素数量要一致,目前都是1-10。还有我给TEST1数组2个10,2个8,TEST3数组就出现了3个10?这个不是我想要的
数组内相同值的查找及数组优先级重新排序 已锁定
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1200系列

共有15643条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

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

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

  • 分享

  • 只看
    楼主

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