for语句里怎么让每次循环得到的值保留下来,并且赋给一个数组中的每个元素。
求得是15个移动平均数,放在ma[j],
已知的21个值,放在obs[i]数组里了。
或者不用for语句,有没有更好的办法?
如果这21个值不在数组里,而放在一张sql数据表里,我怎么在写语句求
这移动平均数啊?

解决方案 »

  1.   

    不知道移动平均值是什么意思,
    select avg(字段) from table
      

  2.   

    在数组中循环
    在数据库中直接select avg(FieldName) from table where ****
      

  3.   

    又一个没看懂的贴子
    求得是15个移动平均数,放在ma[j],
    -----------
    根据什么求的?
      

  4.   

    看不明白,用SQL吧,select avg(col1) from tab
      

  5.   

    不好意思,可能是我没说清楚。一共21个数,先加上前七个数,除以7,得到一个平均数,然后前七个数的和减去第一个数,加上第8个数,在除以7,得到第二个平均数,以此类推,可以求得15个平均数。
    用sql语句如何实现。那21个数放在sql的同一列里。
      

  6.   

    没人回帖啦!帮帮忙啊!
    是在delphi环境下做这个的,对导入的表格里的数据进行计算,算移动平均数并把数据放在新的表格里,这第一步解决了,后面我就好做了。
      

  7.   

    如果用Delphi本身的功能,这个不难嘛!(假设数组下标从0开始)
    首先假设源数组为
    source: array of double;
    平均数的数组为
    average: array of double;
    每次平均数的数据个数为
    K := 7;伪代码可以是这个样子
    首先求出前K个数据的和
    sum := 0;
    for i:=0; i<K; i++
      sum := sum + source[i];
    //然后保存第1个Average
    average[0]:= sum/K;
    然后开始循环
    for i:=K; i<length of source; i++
      sum := sum - source[i-K] + source[i] ; //加上当前值,去掉最前面的值
      average[i-K+1] := sum/K;把它调整成Delphi的样子就可以拉。
      

  8.   

    program Project2;{$APPTYPE CONSOLE}uses
      SysUtils;var
      array1:array[1..21] of integer;
      array2:array[1..15] of extended; //存放平均数
      i,j:integer;
      sum:integer;
    begin
      for i:=1 to 21 do
        array1[i]:=i;
      for i:=1 to 15 do
      begin
        for j:= 0 to 6 do
        begin
          sum:=sum + array1[i + j];
        end;
        array2[i]:= sum / 7;
      end;
      for i:=1 to 15 do
      begin
        write(floattostr(array2[i]));
        write(';');
      end;
      readln;
    end.