Поменяйте строки с наибольшим и наименьшим элементами этой матрицы между собой - VB
Формулировка задачи:
Дана матрица размером NxM.Поменяйте строки с наибольшим и наименьшим элементами этой матрицы между собой.
Вопрос: размерность этой матрицы не дана, как тогда определить наибольший и наименьший элемент?
Решение задачи: «Поменяйте строки с наибольшим и наименьшим элементами этой матрицы между собой»
textual
Листинг программы
Private Sub Command1_Click()
Dim a(), n%, m%, t%, i%, j%
Dim tmp, i_mn%, i_mx%
n = 10: m = 5
ReDim a(1 To n, 1 To m)
Cls
For i = 1 To n
For j = 1 To m
a(i, j) = Int(Rnd * 89) + 10
Next
Next
i_mn = ind_mm%(a(), -1)
i_mx = ind_mm%(a(), 1)
Call print_m("исходный массив", a(), i_mn, i_mx)
For j = 1 To m
tmp = a(i_mn, j)
a(i_mn, j) = a(i_mx, j)
a(i_mx, j) = tmp
Next
Call print_m("полученный массив", a(), i_mn, i_mx)
End Sub
Function ind_mm%(mass(), t%)
Dim i%, j%, ui%, uj%, mm
ui = UBound(mass, 1): uj = UBound(mass, 2)
mm = mass(1, 1): ind_mm = 1
For i = 1 To ui
For j = 1 To uj
If mm * t < mass(i, j) * t Then
mm = mass(i, j): ind_mm = i
End If
Next
Next
End Function
Sub print_m(z$, mass(), r1%, r2%)
Dim i%, j%, ui%, uj%
ui = UBound(mass, 1): uj = UBound(mass, 2)
Print: Print z: Print
For i = 1 To ui
For j = 1 To uj
Me.ForeColor = IIf((r1 > 0 And r1 = i) Or (r2 > 0 And r2 = i), vbRed, 0)
Print mass(i, j); vbTab;
Next
Print
Next
End Sub