Пример 4.8.2-5. Написать процедуру, которая определяет минимальный элемент, лежащий выше главной диагонали матрицы.
Алгоритм и программный код процедуры представлен на рис. 4.8.2-5.
Sub Pr825(ByRef x(,) As Single, _ ByRef xmin As Single, _ ByRef imin As Integer, ByRef jmin As Integer) Dim i, j, m As Integer m = x.GetLength(0) – 1 imin = 0 : jmin = 1 : xmin = x(0,1) For i = 0 To m For j = i + 1 To m If x(i,j) < xmin Then xmin = x(i,j) : imin = i jmin = j End If Next j Next i End Sub |
Рис. 4.8.2-5. Программный код процедуры Pr825()
Примера 4.8.2-5
Пример 4.8.2-6. Написать процедуру, которая заполняет элементы массива f(5,2) целыми числами, а затем переставляет элементы первого и последнего столбцов.
Алгоритм и код программы приведены на
рис. 4.8.2-6.
Данный пример демонстрирует заполнение массива целых чисел f(,) и перестановку элементов первого и последнего столбцов. Исходные данные для инициализации массива f(,) записываются в фигурных скобках при описании массива. Вложенные циклы обеспечивают перебор элементов двумерного массива по столбцам: внутренний цикл по первому индексу, а внешний по второму. Перестановка элементов первого и последнего столбцов в программе выполняется в цикле, изменяющем номер строки i, в котором выполняется обмен значениями элементов f(i,0) и f(i,2).
После этого массив выводится на экран в следующем виде:
Sub Pr826() Dim i, j, r, c1, c2 As Integer Dim f(,) As Integer={{1,2,3}, {4,5,6}, {7,8,9}, {10,11,12}, _ {13,14,15},{16,17,18}} c1 = 0 : c2 = 2'номера столбцов vivodIntMac20(f, TextBox1)'Вывод мас. Pr826(f, c1, c2)'Перест.1-го и 2-го столбцов vivodIntMac20(f, TextBox2)'Вывод преобразованно массива End Sub 'Процедура перестановки столбцов Sub ПерСтол(ByRef f(,) As Integer, ByVal cc1 As Integer, _ ByVal cc2 As Integer) Dim ArrayRank, RawCount, i, r As Integer ArrayRank = f.Rank : RawCount = f.GetLength(ArrayRank - 2) For i = 0 To RawCount - 1 r = f(i,cc1) : f(i,сс1) = f(i,cc2) : f(i,cc2) = r Next i End Sub |
Рис. 4.8.2-6. Программный код процедуры Pr826() Примера 4.8.2-6
Пример 4.8.2-7. Написать процедуру, которая формирует двумерный массив x по правилу: x(i ,j ) = 2*(i - 2) 2 - (j - 2)2).
Алгоритм и процедура данной задачи приведены на рис. 4.8.2-7.
'Формирование двумерного массива x(,) Sub Pr827(ByRef x(,) As Single) Dim i, j, m As Integer m = x.GetLength(0) - 1 For i = 0 To m For j = 0 To m x(i, j) = CSng(2 * (i - 2) ^ 2 - (j - 2) ^ 2) Next Next End Sub |
Рис. 4.8.2-7. Программный код процедуры Pr827()
Примера 4.8.2-7
Пример 4.8.2-4.8. Написать процедуру, которая формирует одномерный массив, каждый элемент которого представляет собой количество положительных элементов соответствующего столбца массива b(,).
Sub Pr828(ByRef b(,) As Single, _ ByRef a() As Integer) Dim Rank,RC,CC,j,i,n As Integer Rank = b.Rank RC = b.GetLength(Rank - 2) - 1 CC = b.GetLength(Rank - 1) - 1 ReDim a(CC) Dim m As String For j = 0 To CC n = 0 For i = 0 TO RC If b(i,j) > 0 Then n = n + 1 Next i a(j)= n Next j End Sub |
Рис. 4.8.2-8. Программный код процедуры Pr828()
Примера 4.8.2-8
Предполагается, что выделение памяти и ввод массива b(,)осуществляются в процедуре, которая вызывает процедуру Pr828().
Алгоритм и код программы представлены на рис. 4.8.2-5.
Для перебора всех элементов исходной таблицы b(,)также использованы вложенные циклы, в данном случае во внешнем цикле меняется номер столбца, а во внутреннем – номер строки. Такой порядок перебора элементов двумерного массива диктуется условиями задачи. В каждом столбце производится подсчет положительных элементов, и по окончании цикла результат записывается в соответствующий элемент одномерного массива а(), номер которого совпадает с номером столбца матрицы b(,).