Как исключить из одномерного массива 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д