编程论坛
注册
登录
编程论坛
→
VFP论坛
数组求最大值,平均值
a1999zqw
发布于 2021-07-18 22:15, 1324 次点击
一维数组a1=1,a2=4,a3=12,a4=3,a5=9,a6=12.6,a7=25,........,a200=51
需要求某-段连续的最大值和平均值,例如a3到a7的最大值和平均值,或者a13到a169的最大值和平均值,谢谢
7 回复
#2
琅拿度
2021-07-19 08:29
a_max=0
a_tot=0
ii=0
for i=13 to 169
ic=allt(str(i))
a_max=max(a_max,a&ic)
a_tot=a_tot+a&ic
ii=ii+1
endfor
最大值=a_max
平均值=a_tot/ii
#3
sdta
2021-07-19 09:39
程序代码:
CLEAR
LOCAL an
[
100
]
FOR
lnj
=
1
TO
100
an
[
lnj
]
=
lnj
ENDFOR
getan
[
@an, 3, 8
]
&&
数组元素3
-
8
,可以随意更改,第三个参数必须大于第二个参数
? an
[
1
]
, an
[
2
]
FUNCTION
getan(ab, b1, b2)
LOCAL lnj, lnSum, lnMax
lnSum
=
0
lnMax
=
0
FOR
lnj
=
b1
TO
b2
lnSum
=
lnSum
+
ab
[
lnj
]
lnMax
=
MAX
(ab
[
lnj
]
, lnMax)
ENDFOR
ab
[
1
]
=
lnMax
&&
最大值
ab
[
2
]
=
lnSum
/
(b2
-
b1
+
1
)
&&
平均值
ENDFUNC
#4
a1999zqw
2021-07-19 12:07
回复 3楼 sdta
版主,谢谢您。有个小问题:原数组数值不要修改。另外getan[@an, 3, 8] 中的@an是什么意思,vfp9帮助文件里找不到。
#5
sdta
2021-07-19 12:15
以下是引用
a1999zqw
在2021-7-19 12:07:17的发言:
版主,谢谢您。有个小问题:原数组数值不要修改。另外getan[@an, 3, 8] 中的@an是什么意思,vfp9帮助文件里找不到。
只有本站会员才能查看附件,请
登录
#6
a1999zqw
2021-07-19 14:22
看了老半天还是不会。用SET UDFPARMS TO VALUE 原数组数值是保留原有的了,那怎么把计算结果传递给新的数组呢,老师赐教,谢谢。
#7
吹水佬
2021-07-19 14:31
用CALCULATE命令算
程序代码:
CREATE
CURSOR
tt (f1 I)
LOCAL arr
[
200,1
]
FOR
i
=
1
TO
ALEN(arr)
arr
[
i
]
=
i
ENDFOR
APPEND
FROM
ARRAY arr
nBegin
=
3
nEnd
=
8
CALCULATE
MAX
(f1),
AVG
(f1)
TO
nMax,nVag
FOR
BETWEEN
(RECNO(),nBegin,nEnd)
? nMax,nVag
#8
吹水佬
2021-07-19 14:35
以下是引用
a1999zqw
在2021-7-19 14:22:49的发言:
看了老半天还是不会。用SET UDFPARMS TO VALUE 原数组数值是保留原有的了,那怎么把计算结果传递给新的数组呢,老师赐教,谢谢。
这样看看应该明
DIMENSION arr[2]
fun(@arr)
?arr[1]
?arr[2]
FUNCTION fun(arr)
arr[1] = 123
arr[2] = 456
ENDFUNC
1