Как исключить из одномерного массива max и min? - VB

Узнай цену своей работы

Формулировка задачи:

Из данного массива A(n) исключить максимальный и минимальный элемент Задача элементарная, но я тупо забыл как работать в VB)))

Решение задачи: «Как исключить из одномерного массива max и min?»

textual
Листинг программы
  1. Option Explicit
  2. Declare Function SafeArrayGetDim Lib "oleaut32.dll" (ByRef saArray() As Any) As Long
  3.  
  4. Private Sub Fill_Array(ByRef A() As Long, ByVal Bound As Long, _
  5.     ByVal nFrom As Long, ByVal nTo As Long, _
  6.     ByRef min As Long, ByRef max As Long)
  7.     'Bound 'кол-во эл-тов
  8.    'nFrom 'диапазон - от
  9.    'nTo 'диапазон - до (включительно)
  10.    'min 'буфер для получения мин. числа
  11.    'max 'буфер для получения макс. числа
  12.    Dim n As Long
  13.     ReDim A(Bound)
  14.     min = nFrom: max = nTo
  15.    
  16.     For n = 0 To Bound
  17.         A(n) = Int(Rnd * (nTo - nFrom + 1)) + nFrom
  18.         If A(n) > max Then max = A(n)
  19.         If A(n) < min Then min = A(n)
  20.     Next
  21. End Sub
  22.  
  23. Private Function Del_min_max(ByRef A() As Long, ByVal min As Long, ByVal max As Long)
  24.     Dim B() As Long
  25.     Dim n As Long
  26.     Dim c As Long
  27.     ReDim B(UBound(A))
  28.    
  29.     For n = 0 To UBound(A)
  30.         If A(n) <> max And A(n) <> min Then
  31.             B(c) = A(n)
  32.             c = c + 1
  33.         End If
  34.     Next
  35.    
  36.     If c = 0 Then Erase B() Else ReDim Preserve B(c - 1)
  37.     Del_min_max = B()
  38. End Function
  39.  
  40. Public Sub main()
  41.     Dim A() As Long
  42.     Dim min As Long 'буфер для получения мин. числа
  43.    Dim max As Long 'буфер для получения макс. числа
  44.    Dim n As Long
  45.    
  46.     Call Fill_Array(A(), 20, 0, 9, min, max)
  47.    
  48.     Debug.Print "Исходный массив:"
  49.     For n = 0 To UBound(A)
  50.         Debug.Print "A("; n; ")="; A(n)
  51.     Next
  52.    
  53.     A() = Del_min_max(A(), min, max)
  54.    
  55.     Debug.Print "После удаления:"
  56.     If SafeArrayGetDim(A) <> 0 Then
  57.         For n = 0 To UBound(A)
  58.             Debug.Print "A("; n; ")="; A(n)
  59.         Next
  60.     End If
  61. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 4.071 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы