当前位置:编程学习 > VB >>

请问怎么比较一个二维数组的各个值,求出最大最小值?

    先要求自动生成20个学生的二门课成绩,然后求出最科成绩的最高最低以及平均分。成绩是生成了。但是不懂得怎么比较?要怎么才能获得那个生成的成绩呢??调用数组吗??好头痛啊。。求求大家帮帮忙忙了。。万分感谢! --------------------编程问答-------------------- 应该是比较简单的问题:
你写一个求单科成绩求最大值\最小值\平均值的函数,将每科成绩的相应值求出来就行了.
比如:
Option Explicit

Private Sub Command1_Click()
Dim a, b
a = Array(78, 87.5, 64, 92, 67, 99, 100, 63.5, 77, 47.5, 81, 88, 76, 94, 29, 66, 57, 40, 95, 79) '某科分数
b = Max_Min_Mean(a)
MsgBox "最高分=" & b(0)
MsgBox "最低分=" & b(1)
MsgBox "平均分=" & Format(b(2), "0.00")
End Sub

Private Function Max_Min_Mean(ByRef a As Variant) As Variant
Dim l As Long, i As Long
Dim x As Single, y As Single, s As Single
l = UBound(a)
x = a(0)
y = a(0)
s = a(0)
For i = 1 To l - 1
If a(i) > x Then x = a(i)
If a(i) < y Then y = a(i)
s = s + a(i)
Next
s = s / (l + 1)
Max_Min_Mean = Array(x, y, s)

End Function

--------------------编程问答-------------------- 问题是这个成绩的分数是随机得到的哦。每一次调用程序时,都会是不同的成绩。这也没影响吗?用循环语气来比较得出最大最小。这样行的吗?但是我不知怎么调用到那个用来存放随机得到成绩的数组。。 --------------------编程问答-------------------- i=0
拿到某个值时做如下操作:
   Redim preserve Arr(i) as Integer
    Arr(i) = iValue'你拿到的值
    i=i+1
这需要取值 --------------------编程问答-------------------- 循环取值吧? --------------------编程问答-------------------- 如果数组每次都都固定赋值,那就无所谓了,直接调用他那个函数 --------------------编程问答-------------------- 就是说先自动生成20个学生的两门课程。。然后放在二维数组中,再显示出来,这时,二维数组中的数值是固定的,现在要求各科成绩,也是就二维数组中,上标和下标的最大值,最小值,及平均值,然后显示出来。而且显示成绩,及,计算最大最小值这是两个不同的事件来产生的。我不知要怎么才能用到二维数组中的成绩来进行比较从而得出最大最小值,是不是有其它办法呢? --------------------编程问答-------------------- 别说只有两门学科,再多的学科也很简单。


路过一下…………
--------------------编程问答-------------------- 楼上这位大哥。。。出手相助一下嘛。。。 --------------------编程问答-------------------- 在‘非技术类’的地方只看热闹,不讨论技术问题。

--------------------编程问答--------------------
引用 9 楼 chen8013 的回复:
在‘非技术类’的地方只看热闹,不讨论技术问题。

现实~ --------------------编程问答-------------------- 楼主帖子发错了地方,一般都不想在非技术区回复技术问题,请楼主下次注意!
Option Explicit

Private Sub Form_Load()
    '放四个标签label控件label1...4
    Dim i As Long
    Dim Grade(1 To 20) As Single
    Dim Max As Single, Min As Single, Mean As Single '最大值,最小值,平均值
    
    Label1.Caption = "随机成绩": Label2.Caption = "最大值": Label3.Caption = "最小值": Label4.Caption = "平均值"
    Call CreateRndArray(Grade)
    For i = 1 To 20
        Label1.Caption = Label1.Caption & vbCrLf & CStr(Grade(i))
    Next i
    Call MaxMinMean(Grade, Max, Min, Mean)
    Label2.Caption = Label2.Caption & vbCrLf & CStr(Max)
    Label3.Caption = Label3.Caption & vbCrLf & CStr(Min)
    Label4.Caption = Label4.Caption & vbCrLf & CStr(Mean)
End Sub
'利用随机函数产生20个0~100之间的随机数 myArray(小标从1开始)存储随机数 随机数个数 Seed种子
Private Sub CreateRndArray(ByRef myArray() As Single, Optional ByVal Seed As Long = 65535)
    Dim i As Long, rndNum As Single, Num As Long
    i = 0
    Num = UBound(myArray) '随机数个数
    Call Rnd(Seed)
    Do While i < Num
        rndNum = Format$((Rnd * 100), "0.#")
        If rndNum >= 0 And rndNum <= 100 Then
            i = i + 1
            myArray(i) = rndNum
        End If
    Loop
End Sub
'从数组中得到最大值 最小值 平均值 myArray(小标从1开始)需要处理的数组
Private Sub MaxMinMean(ByRef myArray() As Single, ByRef Max As Single, ByRef Min As Single, ByRef Mean As Single)
    Dim Num As Long, i As Long
    Dim x As Single, y As Single, s As Single
    Num = UBound(myArray)
    Max = myArray(1): Min = myArray(1): Mean = 0 '初始化
    
    For i = 1 To Num
        If myArray(i) > Max Then Max = myArray(i)
        If myArray(i) < Min Then Min = myArray(i)
        Mean = Mean + myArray(i)
    Next
    Mean = Format(Mean / Num, "0.#")
End Sub
--------------------编程问答-------------------- 读几年级了?
补充:VB ,  非技术类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,