为movesum增加一个参数即可!
function movesum(aarray:array of double;n:integer;len:integer):array of double
var i,j,count:integer;
tempsumarray:array of double;
sum:double;
begin
count:=1;
for i:=0 to length(aarray)-1-n-1 do
begin
  sum:=0;
  for j:=0 to n-1 do
  begin
  sum=sum+aarray[i+j];
  end;
  tempsumarray[i]:=sum;
  if count=len then break;
  inc(count);
end;
result:=tempsumarray;
end;

解决方案 »

  1.   

    整个实现方式只需要对数组扫描一次即可实现
    var a:integer;
    begin 
     a:=0;
     for i:=1 to length  //其中arr[0]=0无实际值
       begin
         a:=a+arr[i];
         if( i>=n )
          begin
           a:=a-arr[i-n]; 
           avg[i-n]:=a;
          end
       end
    end//其中arr为给定数组,从1开始计数
    avg为移动值
      

  2.   

    我说得可能跟你的问题无关,我只是在提个议不要忘记 Property
    我觉得在Delphi下就要好好利用 Property, public
        function GetValue(Index: Integer): Integer;
        property Value[Index: Integer]: Integer read GetValue;function TClassName.GetValue(Index: Integer):Integer;
    Begin
      ... // 你的算法
    End;
      

  3.   

    我指的是必须用函数互相嵌套实现
    比如我最终要求moveave(movesum(Array1,2),3)返回10个值,但moveave并不知道movesum返回几个值movesum也不知道moveave要他返回几个值
      

  4.   

    这不是vc论坛吗?为什么会有delphi的?
      

  5.   

    to gye 
    用pascal 描述一下算法都很奇怪吗?