КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Пример 4. Задана матрица а, имеющая кa строк и la столбцов, а также матрица b, имеющая кb строк и lb столбцов и матрица сЗадана матрица а, имеющая к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).
Блок-схема алгоритма функции МаксМатр
Интерфейс проекта Воспользуемся тем же интерфейсом проекта, который был применен для примеров, рассмотренных в предыдущих лекциях (подробнее). Разработка программы
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.
|