本帖最后由 cowboamo 于 2014-09-28 23:14:03 编辑

解决方案 »

  1.   

    代码逻辑存在问题while K < Count do
            begin
              PData[K - 1].Txt := PData[K].Txt;
              PData[K - 1].X := PData[K].X;
               
              PData[K].Txt := '';
              PData[K].X := 0;          
              Inc(K);
              Dec(Count);
            end;
    Count 这个是全局变量。上个循环会造成部分数组未循环
      

  2.   


    试试看
    可以了,谢.还有个问题,请教如何处理,
    我自己做的代码总是有问题.假设已排X值对数组PData排序,那如何取出X每5个步进值之内,最大的Rate值?如果结构是这样:
    type
        TPointStruct = record //
            Txt: string; //字符
            X: Integer; //X位置
            Rate: Integer; //大小
        end;var
      PData: array of TPointStruct; //定义结构体
    比如,数据:
    r,24,32
    i,25,31
    t,26,64
    t,27,64
    l,28,87
    ...
    如何得到l,28,87这一行?当得到这一行后,下一个28要+5以上再找它5个相似的最大值
      

  3.   


    试试看
    可以了,谢.还有个问题,请教如何处理,
    我自己做的代码总是有问题.假设已排X值对数组PData排序,那如何取出X每5个步进值之内,最大的Rate值?如果结构是这样:
    type
        TPointStruct = record //
            Txt: string; //字符
            X: Integer; //X位置
            Rate: Integer; //大小
        end;var
      PData: array of TPointStruct; //定义结构体
    比如,数据:
    r,24,32
    i,25,31
    t,26,64
    t,27,64
    l,28,87
    ...
    如何得到l,28,87这一行?当得到这一行后,下一个28要+5以上再找它5个相似的最大值
    既然数组已经有序了,直接对数组进行循环
    for i:=0 to 数组长度-1 do
    begin
        n := i mod 5;
       if n<=4 then
      begin
          定义两个结构存取到的元素,如果新的元素的rate大于旧的,把新的值给旧的。
       if n=4时 旧的就是这5个中最大的rate了,把这个元素保存到另个一个新的数组里
      end;
    end;循环完了,这个新的数组里就是每5个中rate最大的了。
      

  4.   


    试试看
    可以了,谢.还有个问题,请教如何处理,
    我自己做的代码总是有问题.假设已排X值对数组PData排序,那如何取出X每5个步进值之内,最大的Rate值?如果结构是这样:
    type
        TPointStruct = record //
            Txt: string; //字符
            X: Integer; //X位置
            Rate: Integer; //大小
        end;var
      PData: array of TPointStruct; //定义结构体
    比如,数据:
    r,24,32
    i,25,31
    t,26,64
    t,27,64
    l,28,87
    ...
    如何得到l,28,87这一行?当得到这一行后,下一个28要+5以上再找它5个相似的最大值
    既然数组已经有序了,直接对数组进行循环
    for i:=0 to 数组长度-1 do
    begin
        n := i mod 5;
       if n<=4 then
      begin
          定义两个结构存取到的元素,如果新的元素的rate大于旧的,把新的值给旧的。
       if n=4时 旧的就是这5个中最大的rate了,把这个元素保存到另个一个新的数组里
      end;
    end;循环完了,这个新的数组里就是每5个中rate最大的了。
    代码出来了,但为什么达不到效果?
    请移步http://bbs.csdn.net/topics/390899283