Нахождение наибольшего по модулю элемента и выбрасывание из исходной матрицы строчку и столбец этого элемента - VB

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

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

В данной действительной квадратной матрице порядка n найти наибольший по модулю элемент. Получить квадратную матрицу порядка n-1 путём выбрасывания из исходной матрицы какой-нибудь строки и столбца, на пересечении которых расположен элемент с найденным значением. Не могу разобраться с выбрасыванием. Вот мой код: Процедура формирования массива с рандомными значениями
Листинг программы
  1. 'Новый массив
  2. Sub NewMac(ByRef K(,) As Integer, ByVal m As Integer, ByVal n As Integer)
  3. Dim i, j As Integer
  4. For i = 0 To m
  5. For j = 0 To n
  6. Randomize()
  7. K(i, j) = CInt(Rnd())
  8. Next j
  9. Next i
  10. End Sub
Процедура нахождения наибольшего по модулю элемента
Листинг программы
  1. Sub Naib(ByRef K(,) As Integer)
  2. Dim i, j, max As Integer
  3. max = K(0, 0)
  4. For i = 0 To UBound(K)
  5. For j = 0 To UBound(K)
  6. If Abs(K(i, j)) > max Then
  7. max = Abs(K(i, j))
  8. End If
  9. Next j
  10. Next i
  11. End Sub

Решение задачи: «Нахождение наибольшего по модулю элемента и выбрасывание из исходной матрицы строчку и столбец этого элемента»

textual
Листинг программы
  1. Option Explicit
  2. Private Sub Form_Load()
  3.     Dim Mtx() As Double, Tmp() As Double
  4.     Dim Fi As Long, Fj As Long, v As Double
  5.     Dim i As Long, j As Long
  6.     Dim cI As Long, cJ As Long
  7.     NewArray Mtx, 5
  8.     Print "Исходная ";
  9.     PrintMatrix Mtx
  10.     v = Max(Mtx, Fi, Fj)
  11.     Print "Максимальный элемент = " & v & " (" & Fi & " x " & Fj & ")"
  12.     ReDim Tmp(UBound(Mtx, 1) - 1, UBound(Mtx, 2) - 1)
  13.     cI = 0: cJ = 0
  14.     For i = 0 To UBound(Mtx, 1): For j = 0 To UBound(Mtx, 2)
  15.         If i <> Fi And j <> Fj Then
  16.             cI = i + (i >= Fi)
  17.             cJ = j + (j >= Fj)
  18.             Tmp(cI, cJ) = Mtx(i, j)
  19.         End If
  20.     Next: Next
  21.     Mtx = Tmp
  22.     Print "Итоговая ";
  23.     PrintMatrix Mtx
  24. End Sub
  25. Private Sub PrintMatrix(Ar() As Double)
  26.     Dim i As Long, j As Long
  27.     Dim S As String
  28.     Print "матрица (" & UBound(Ar, 1) + 1 & " x " & UBound(Ar, 2) + 1 & ") {"
  29.     For i = 0 To UBound(Ar, 1): For j = 0 To UBound(Ar, 2)
  30.         S = Space(6)
  31.         LSet S = Str$(Ar(i, j))
  32.         Print S;
  33.     Next
  34.     Print
  35.     Next
  36.     Print "}"
  37. End Sub
  38. Private Sub NewArray(Ar() As Double, ByVal Size As Long)
  39.     Dim i As Long, j As Long
  40.     ReDim Ar(Size - 1, Size - 1)
  41.     Randomize ' Достаточно один раз
  42.    For i = 0 To Size - 1: For j = 0 To Size - 1
  43.         Ar(i, j) = Int(Rnd * 100) - 50
  44.     Next: Next
  45. End Sub
  46. Private Function Max(Ar() As Double, ByRef RetI As Long, ByRef RetJ As Long) As Double
  47.     Dim i As Long, j As Long
  48.     Max = Ar(0, 0)
  49.     For i = 0 To UBound(Ar, 1): For j = 0 To UBound(Ar, 2)
  50.         If Abs(Ar(i, j)) > Max Then
  51.             Max = Abs(Ar(i, j))
  52.             RetI = i: RetJ = j
  53.         End If
  54.     Next: Next
  55. End Function

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


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

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

9   голосов , оценка 4.333 из 5

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

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

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