Студопедия

КАТЕГОРИИ:

АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника


Пример 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).

 


Блок-схема алгоритма функции МаксМатр

Рис. 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

Print

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.


Поделиться:

Дата добавления: 2014-12-03; просмотров: 164; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.006 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты