Пример 4
Лекция 13
Задана матрица а, имеющая кa строк и la столбцов, а также матрица b, имеющая кb строк и lb столбцов и матрица с, имеющая кc строк и lc столбцов.
Найти значение наибольшего из максимальных элементов этих матриц. Вывести матрицу, максимальный элемент которой оказался наибольшим.
Перечень подзадач
1. Ввод матрицы x, имеющей imax строк и jmax столбцов.
Применим процедуру Ввод_матрицы (x() As Single).
2. Определение максимального элемента матрицы x, имеющей imax строк и jmax столбцов.
Применим функцию:
МаксМатр(x() As Single, imax As Integer, jmax As Integer) As Single
3. Вывод матрицы x, имеющей imax строк и jmax столбцов.
Применим процедуру:
Вывод_матрицы (x() As Single).
Блок-схема алгоритма функции МаксМатр
![]() |
Рис. 13.1. Блок-схема алгоритма определения значения максимального элемента матрицы |
Интерфейс проекта
Воспользуемся тем же интерфейсом проекта, который был применен для примеров, рассмотренных в предыдущих лекциях (подробнее).
Разработка программы
Option Explicit
Option Base 1
Private Sub Command1_Click()
Dim ka As Integer, la As Integer
Dim kb As Integer, lb As Integer
Dim kc As Integer, lc As Integer
Dim a() As Single, b() As Single, c() As Single
Cls
ka = InputBox("ka=?")
la = InputBox("la=?")
kb = InputBox("kb=?")
lb = InputBox("lb=?")
kc = InputBox("kc=?")
lc = InputBox("lc=?")
Print "ka= "; ka; " la= "; la
Print "kb= "; kb; " lb= "; lb
Print "kc= "; kc; " lc= "; lc
ReDim a(ka, la), b(kb, lb), c(kc, lc)
Print "Задайте значения элементов матрицы a"
Ввод_матрицы a
Print "Задайте значения элементов матрицы b"
Ввод_матрицы b
Print "Задайте значения элементов матрицы c"
Ввод_матрицы c
Dim МаксА As Single, МаксВ As Single, МаксС As Single
МаксА = МаксМатр(a, ka, la)
МаксВ = МаксМатр(b, kb, lb)
МаксС = МаксМатр(c, kc, lc)
Dim МаксАВС As Single
МаксАВС = МаксА
If МаксВ > МаксАВС Then МаксАВС = МаксВ
If МаксС > МаксАВС Then МаксАВС = МаксС
Print "Наибольший элемент равен "; МаксАВС
If МаксАВС = МаксА Then
Print "Наибольший элемент содержит матрица a"
Вывод_матрицы a
End If
If МаксАВС = МаксВ Then
Print "Наибольший элемент содержит матрица b"
Вывод_матрицы b
End If
If МаксАВС = МаксС Then
Print "Наибольший элемент содержит матрица c"
Вывод_матрицы c
End If
End Sub
Private Sub Ввод_матрицы(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x)
5: i_max = UBound(x)
Dim j As Integer
Dim j_min As Integer
Dim j_max As Integer
j_min = LBound(x, 2)
10: j_max = UBound(x, 2)
For i = i_min To i_max
For j = j_min To j_max
x(i, j) = InputBox("Элемент матрицы (" _
& i & ", " & j & ") = ?", _
"Ввод матрицы")
Print x(i, j),
15: Next
Next
End Sub
Private Function МаксМатр(x() As Single, imax As Integer, _
jmax As Integer) As Single
Dim i As Integer, j As Integer, МаксХ As Single
МаксХ = x(1, 1)
For i = 1 To imax
For j = 1 To jmax
If x(i, j) > МаксХ Then МаксХ = x(i, j)
Next j, i
МаксМатр = МаксХ
End Function
Private Sub Вывод_матрицы(x() As Single)
1: Dim i As Integer
Dim i_min As Integer
Dim i_max As Integer
i_min = LBound(x)
5: i_max = UBound(x)
Dim j As Integer
Dim j_min As Integer
Dim j_max As Integer
j_min = LBound(x, 2)
10: j_max = UBound(x, 2)
For i = i_min To i_max
For j = j_min To j_max
Print x(i, j),
Next
15: Print
Next
End Sub
В процедурах Ввод_матрицы и Вывод_матрицы применены функции Ubound и Lbound.
Не обязательно передавать в процедуры и функции значения верхних и нижних границ размерностей массива. Их можно вычислять. Для этого можно применить функции Ubound и Lbound соответственно.
Синтаксис обращения к этим функциям:
UBound(ИмяМассива [,Номер измерения])
LBound(ИмяМассива [,Номер измерения])
Параметр НомерИзмерения используют в случае многомерного массива, например:
Dim x() As Single
.
.
.
НаибольшийНомерСтроки = Ubound (x, 1)
НаименьшийНомерСтолбца = Lbound (x, 2)
Если номер измерения опущен, то он подразумевается равным 1.