Нахождение наибольшего по модулю элемента и выбрасывание из исходной матрицы строчку и столбец этого элемента - VB
Формулировка задачи:
В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n-1 путём выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением.
Не могу разобраться с выбрасыванием.
Вот мой код:
Процедура формирования массива с рандомными значениями
Процедура нахождения наибольшего по модулю элемента
Решение задачи: «Нахождение наибольшего по модулю элемента и выбрасывание из исходной матрицы строчку и столбец этого элемента»
textual
Листинг программы
Option Explicit Private Sub Form_Load() Dim Mtx() As Double, Tmp() As Double Dim Fi As Long, Fj As Long, v As Double Dim i As Long, j As Long Dim cI As Long, cJ As Long NewArray Mtx, 5 Print "Исходная "; PrintMatrix Mtx v = Max(Mtx, Fi, Fj) Print "Максимальный элемент = " & v & " (" & Fi & " x " & Fj & ")" ReDim Tmp(UBound(Mtx, 1) - 1, UBound(Mtx, 2) - 1) cI = 0: cJ = 0 For i = 0 To UBound(Mtx, 1): For j = 0 To UBound(Mtx, 2) If i <> Fi And j <> Fj Then cI = i + (i >= Fi) cJ = j + (j >= Fj) Tmp(cI, cJ) = Mtx(i, j) End If Next: Next Mtx = Tmp Print "Итоговая "; PrintMatrix Mtx End Sub Private Sub PrintMatrix(Ar() As Double) Dim i As Long, j As Long Dim S As String Print "матрица (" & UBound(Ar, 1) + 1 & " x " & UBound(Ar, 2) + 1 & ") {" For i = 0 To UBound(Ar, 1): For j = 0 To UBound(Ar, 2) S = Space(6) LSet S = Str$(Ar(i, j)) Print S; Next Print Next Print "}" End Sub Private Sub NewArray(Ar() As Double, ByVal Size As Long) Dim i As Long, j As Long ReDim Ar(Size - 1, Size - 1) Randomize ' Достаточно один раз For i = 0 To Size - 1: For j = 0 To Size - 1 Ar(i, j) = Int(Rnd * 100) - 50 Next: Next End Sub Private Function Max(Ar() As Double, ByRef RetI As Long, ByRef RetJ As Long) As Double Dim i As Long, j As Long Max = Ar(0, 0) For i = 0 To UBound(Ar, 1): For j = 0 To UBound(Ar, 2) If Abs(Ar(i, j)) > Max Then Max = Abs(Ar(i, j)) RetI = i: RetJ = j End If Next: Next End Function
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д