Как исключить из одномерного массива max и min? - VB
Формулировка задачи:
Из данного массива A(n) исключить максимальный и минимальный элемент
Задача элементарная, но я тупо забыл как работать в VB)))
Решение задачи: «Как исключить из одномерного массива max и min?»
textual
Листинг программы
- Option Explicit
- Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
- Private Sub Fill_Array(ByRef A() As Long, ByVal Bound As Long, _
- ByVal nFrom As Long, ByVal nTo As Long, _
- ByRef min As Long, ByRef max As Long)
- 'Bound 'кол-во эл-тов
- 'nFrom 'диапазон - от
- 'nTo 'диапазон - до (включительно)
- 'min 'буфер для получения мин. числа
- 'max 'буфер для получения макс. числа
- Dim n As Long
- ReDim A(Bound)
- min = nFrom: max = nTo
- For n = 0 To Bound
- A(n) = Int(Rnd * (nTo - nFrom + 1)) + nFrom
- If A(n) > max Then max = A(n)
- If A(n) < min Then min = A(n)
- Next
- End Sub
- Private Function Del_min_max(ByRef A() As Long, ByVal min As Long, ByVal max As Long)
- Dim B() As Long
- Dim n As Long
- Dim c As Long
- ReDim B(UBound(A))
- For n = 0 To UBound(A)
- If A(n) <> max And A(n) <> min Then
- B(c) = A(n)
- c = c + 1
- End If
- Next
- If c = 0 Then Erase B() Else ReDim Preserve B(c - 1)
- Del_min_max = B()
- End Function
- Public Sub main()
- Dim A() As Long
- Dim min As Long 'буфер для получения мин. числа
- Dim max As Long 'буфер для получения макс. числа
- Dim n As Long
- Call Fill_Array(A(), 20, 0, 9, min, max)
- Debug.Print "Исходный массив:"
- For n = 0 To UBound(A)
- Debug.Print "A("; n; ")="; A(n)
- Next
- A() = Del_min_max(A(), min, max)
- Debug.Print "После удаления:"
- If SafeArrayGetDim(A) <> 0 Then
- For n = 0 To UBound(A)
- Debug.Print "A("; n; ")="; A(n)
- Next
- End If
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д