Работа нужна в exele
Ответы
Ответ:
Объяснение:
Процедуры модуля с обработчиками кнопок ( к сожалению, файл с макросом не позволено добавлять, поэтому придется нарисовать все так, как на картинках, создать модуль и в него положить обработчики с дополнительными функциями, которые ниже). Имена кнопок и элементов управления смотри по коду. Для кнопок они совпадают с названиями обработчиков.
Private Sub FindMax(ByRef a() As Long, ByRef maxElem As Long, ByRef index_max As Long)
first = LBound(a)
last = UBound(a)
maxElem = a(first)
index_max = first
For i = first + 1 To last
If (maxElem < a(i)) Then
maxElem = a(i)
index_max = i
End If
Next i
End Sub
Private Sub swap(ByRef a() As Long, ByVal i As Long, ByVal j As Long)
Dim temp As Long
temp = a(i)
a(i) = a(j)
a(j) = temp
End Sub
Private Sub BublSort(ByRef a() As Long, ByVal first As Long, ByVal last As Long)
Dim iCur, iLast As Long
iLast = last - 1
Do
iCur = -1
For i = first To iLast
If a(i) > a(i + 1) Then
swap a, i, i + 1
iCur = i
End If
Next i
If iCur >= 0 Then
iLast = iCur
End If
Loop While iCur <> -1
End Sub
Public Sub btnMaxElem_Click()
Dim massiv_A(1 To 10) As Long
For i = 1 To 10
massiv_A(i) = Int(Rnd * 21 - 10)
Next i
Range("A1") = "Íà÷àëüíûé ìàññèâ"
Range("A2:J2") = massiv_A
Dim maxElem As Long, index_max As Long
FindMax massiv_A, maxElem, index_max
Range("A3") = "Ìàêñèìàëüíûé ýëåìåíò"
Range("A4") = "A(" & CStr(index_max) & ") = " & CStr(maxElem)
swap massiv_A, 5, index_max
Range("A5") = "Èçìåíåííûé ìàññèâ"
Range("A6:J6") = massiv_A
End Sub
Sub btnClear_Click()
Dim a As String
Sheets("TestControls").textBoxMassive.Text = ""
End Sub
Sub btnSort_Click()
Dim strText As String
Dim strMassive() As String
Dim intMassive() As Long
strText = Sheets("TestControls").textBoxMassive.Text
strMassive = Split(strText, ",")
If UBound(strMassive) > 0 Then
ReDim intMassive(UBound(strMassive))
For i = 0 To UBound(strMassive)
Debug.Print (strMassive(i))
intMassive(i) = CLng(strMassive(i))
Next i
BublSort intMassive, 0, UBound(intMassive)
For i = 0 To UBound(intMassive)
Debug.Print (intMassive(i))
Next i
Sheets("TestControls").lstBoxElements.List = intMassive
End If
End Sub