Дан массив из произвольных целых положительных чисел - VB
Формулировка задачи:
Задача в Visual Basic 6.0
Дан массив из произвольных целых положительных чисел. Известно,
что в массиве нет одинаковых значений. Заменить в массиве нулями, если это
возможно, значения элементов, расположенных до наибольшего и после наи-
меньшего значений. Вывести исходный и измененный массивы.
Помогите, пожалуйста, алгоритмом, блок-схемой, кодом, чем-нибудь.
Решение задачи: «Дан массив из произвольных целых положительных чисел»
textual
Листинг программы
Option Explicit
'
' Антихакер32™
'
Private Sub Form_Unload(Cancel As Integer)
Const c = 20, r$ = " "
Dim s$, n&, sa$, f&
Dim j$(), j1$(), min&, max&, b As Boolean
1 'Создаём массив где нет одинаковых значений
s = Space$(c): sa = ""
min = 0: max = 0
Randomize Timer
Do While InStr(1, s, r)
n = Fix(Rnd * c)
If Mid$(s, n + 1, 1) = r Then
Mid$(s, n + 1, 1) = 1
sa = sa & r & n * 10 + Fix(Rnd * 10)
End If
Loop
j = Split(Mid$(sa, 2))
'находим максимальное и минимальное
For f = 0 To c - 1: max = IIf(j(f) > max, j(f), max): Next
min = max
For f = 0 To c - 1: min = IIf(j(f) < min, j(f), min): Next
'Обнуляем отрезки между значениями min/max
j1 = j: n = 0
For f = 0 To c - 1
b = j(f) = min Or j(f) = max
If b And n = 0 Then
n = 1
ElseIf b And n = 1 Then n = 2
ElseIf n <> 1 Then j1(f) = 0
End If
Next
Cls 'Вывод
Print "Массив = " & Join(j, ", ") & vbCrLf & _
"Min = " & min & vbCrLf & _
"Max = " & max & vbCrLf & _
"Измененный массив = " & Join(j1, ", ")
'Завершение программы
Select Case MsgBox("Готово", vbAbortRetryIgnore)
Case vbAbort: Cancel = 0
Case vbRetry: GoTo 1
Case vbIgnore: Cancel = 1
End Select
End Sub