【问题标题】:How to retrieve MAX and MIN value of an integer array in RPGLE如何在 RPGLE 中检索整数数组的 MAX 和 MIN 值
【发布时间】:2020-05-14 01:27:59
【问题描述】:

在 RPGLE (AS400) 中如何获取整数数组的最大值和最小值。

【问题讨论】:

    标签: ibm-midrange rpgle cl rpg


    【解决方案1】:

    很遗憾,%min()%max() 不能对数组进行操作...

    最好的解决方案是按升序对数组进行排序,然后将最小值作为第一个条目,将最大值作为最后一个条目。

    如果数组没有完全填满,请务必记录您实际使用了多少元素。然后您可以使用以下内容:

    sorta (a) %subarr(myarry:1:nbrEntries);
    

    【讨论】:

      【解决方案2】:

      当您向数组添加新元素时,您可以跟踪新值是小于当前最小值还是大于当前最大值。然后,最小值和最大值将始终可用。您可以跟踪最小值和最大值的索引,也可以跟踪实际值。

      编辑:正如查尔斯建议的那样,我正在添加一个指向 RFE 的链接,以支持数组的 %MAX 和 %MIN 之类的东西。 http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=116540

      【讨论】:

        【解决方案3】:

        虽然对数组进行排序是可行的,但对于典型的最小/最大用法来说并不是特别有效。排序比简单的线性搜索增加了更多的开销,并且只有在您想在已排序的数组上多次获取值并且您不需要向该数组添加更多未排序的数据时才会更有效。

        我建议你自己用一个简单的 for 循环来实现它:

        For Ix = 1 To %Elem(MyArray);
            If Array(Ix) > MyMax;
                MyMax = Array(Ix);
            EndIf;
            If Array(Ix) < MyMin;
                MyMin = Array(Ix);
            EndIf;
        EndFor;
        

        根据您的使用场景,将其放在一个或多个子过程中可能是有意义的MaxMinMinMax

        【讨论】:

        • 谢谢,这对我有用,在我的场景中排序过程将是一个问题......我需要保持数组未排序。在这种情况下,我必须用高值初始化 Mymin,用最小值正确初始化 Mymax??
        • @KunalRoy 是的。我认为这将是最好的方法。
        【解决方案4】:

        有一个 RFE 支持数组的 %MAX 和 %MIN 之类的东西。到目前为止它只有15票...... http://www.ibm.com/developerworks/rfe/execute?use_case=viewRfe&CR_ID=116540

        【讨论】:

        • 我建议将此信息添加到您的其他答案中
        猜你喜欢
        • 2012-01-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 2017-08-07
        • 1970-01-01
        • 2012-02-06
        • 2020-08-25
        相关资源
        最近更新 更多