Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции Visual Basic.doc
Скачиваний:
105
Добавлен:
09.04.2015
Размер:
1.1 Mб
Скачать

Перечень подзадач

  1. Ввод одномерного массива x. Применим известную по предыдущим примерам процедуру.

  2. Проверка для одномерного массива x, имеющегоimaxэлементов, что значение всех его элементов больше заданной величиныh. Применим функцию:

Проверка(x() As Single, imax As Integer, h As Single) As Boolean

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

Рис. 12.3. Блок-схема алгоритма функции Проверка

Здесь r– это локальная переменная типаBoolean.

Интерфейс проекта

Воспользуемся тем же интерфейсом проекта, который был применен для примеров, рассмотренных в предыдущих лекциях (подробнее).

Разработка программы

Option Explicit

Option Base 1

Private Sub Command1_Click()

Dim k As Integer, l As Integer, m As Integer

Dim a() As Single, b() As Single, c() As Single

Dim h As Single

Cls

k = InputBox("k=?")

l = InputBox("l=?")

m = InputBox("m=?")

h = InputBox("h=?")

Print "k= "; k; " l= "; l; " m= "; m; " h= "; h

ReDim a(k), b(l), c(m)

Print "Ввод вектора а"

Ввод_вектора a

Print "Ввод вектора b"

Ввод_вектора b

Print "Ввод вектора c"

Ввод_вектора c

Dim Количество As Integer

Количество = 0

If Проверка(a, k, h) Then Количество = _ Количество + 1

If Проверка(b, l, h) Then Количество = _ Количество + 1

If Проверка(c, m, h) Then Количество = _ Количество + 1

Select Case Количество

Case 0

Print "Не удовлетворяет ни один массив"

Case 1

Print "Удовлетворяет один массив"

Case 2

Print "Уудовлетворяют два массива"

Case 3

Print "Удовлетворяют три массива"

End Select

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)

For i = i_min To i_max

x(i) = InputBox("Элемент вектора (" _

& i & ")=?",”Ввод вектора”)

Print x(i),

Next

Print

End Sub

Private Function Проверка(x() As Single, imax As Integer, _

h As Single) As Boolean

Dim i As Integer

Dim r As Boolean

r = True

i = 1

Do While (i <= imax) And r

If x(i) > h Then

Else

r = False

End If

i = i + 1

Loop

Проверка = r

End Function

В функции Проверка вместо инструкции цикла DoWhileмогла бы быть применена инструкция циклаForвместе с инструкциейExitFor:

Private Function Проверка(x() As Single, imax As _ Integer, h As Single) As Boolean

Dim i As Integer

Проверка = True

For i = 1 To imax

If x(i) <= h Then

Проверка = False

Exit For

End If

Next

End Function

Лекция 13 Пример 4

Задана матрица а, имеющаякaстрок иlaстолбцов, а также матрицаb, имеющаякbстрок иlbстолбцов и матрицас, имеющаякcстрок иlcстолбцов.

Найти значение наибольшего из максимальных элементов этих матриц. Вывести матрицу, максимальный элемент которой оказался наибольшим.

Перечень подзадач

  1. Ввод матрицы x, имеющейimaxстрок иjmaxстолбцов.

Применим процедуру Ввод_матрицы (x()AsSingle).

  1. Определение максимального элемента матрицы x, имеющейimaxстрок иjmaxстолбцов.

Применим функцию:

МаксМатр(x() As Single, imax As Integer, jmax As Integer) As Single

  1. Вывод матрицы x, имеющей imaxстрок иjmaxстолбцов.

Применим процедуру:

Вывод_матрицы (x()AsSingle).

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

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