Дан двумерный массив размером n*m, заполненный случайным образом - VB
Формулировка задачи:
Дан двумерный массив размером n*m, заполненный случайным образом.
1.Вставить после каждой строки, содержащей максимальный по модулю элемент, строку из нулей.
Решение задачи: «Дан двумерный массив размером n*m, заполненный случайным образом»
textual
Листинг программы
Option Explicit
Private Sub Command1_Click()
Dim A() As Integer, B() As Integer, n As Integer, m As Integer, f As Boolean
Dim i As Integer, j As Integer, Max As Integer, k As Integer
n = Val(InputBox("Введите количество строк", "Ввод данных", 9))
m = Val(InputBox("Введите количество столбцов", "Ввод данных", 8))
ReDim A(1 To n, 1 To m)
Me.AutoRedraw = True
Randomize
Cls
Print "Исходная матрица:"
For i = 1 To n
For j = 1 To m
A(i, j) = Int(Rnd * 21 - 10)
Print A(i, j) & vbTab;
Next j
Print
Next i
B = A
Max = A(1, 1)
For i = 1 To n
For j = 1 To m
If Abs(Max) < Abs(A(i, j)) Then Max = A(i, j) 'определяем максим. по модулю
Next j
Next i
Print "Максимальный по модулю элемент матрицы равен " & Max '
For i = 1 To n
For j = 1 To m
If Abs(Max) = Abs(A(i, j)) Then k = k + 1: Exit For 'считаем количество строк содержащих макс. по модулю элемент
Next j
Next i
ReDim A(1 To n + k, m) 'увеличиваем количество строк массива на количество строк содержащих макс. по модулю элемент
k = 0
For i = 1 To UBound(A)
k = k + 1
f = False
For j = 1 To m
A(i, j) = B(k, j)
If Abs(Max) = Abs(A(i, j)) Then f = True
Next j
If f Then i = i + 1
Next i
Print "Результат:"
For i = 1 To UBound(A)
For j = 1 To m
Print A(i, j) & vbTab;
Next j
Print
Next i
End Sub