for语句里怎么让每次循环得到的值保留下来,并且赋给一个数组中的每个元素。
求得是15个移动平均数,放在ma[j],
已知的21个值,放在obs[i]数组里了。
或者不用for语句,有没有更好的办法?
如果这21个值不在数组里,而放在一张sql数据表里,我怎么在写语句求
这移动平均数啊?
求得是15个移动平均数,放在ma[j],
已知的21个值,放在obs[i]数组里了。
或者不用for语句,有没有更好的办法?
如果这21个值不在数组里,而放在一张sql数据表里,我怎么在写语句求
这移动平均数啊?
select avg(字段) from table
在数据库中直接select avg(FieldName) from table where ****
求得是15个移动平均数,放在ma[j],
-----------
根据什么求的?
用sql语句如何实现。那21个数放在sql的同一列里。
是在delphi环境下做这个的,对导入的表格里的数据进行计算,算移动平均数并把数据放在新的表格里,这第一步解决了,后面我就好做了。
首先假设源数组为
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的样子就可以拉。
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.