Разработка программы
Перечень подзадач
Пример 3
Заданы три одномерных массива a(1), a(2), … , a(k), b(1), b(2), … , b(l) и c(1), c(2), … , c(m). Найти у скольких из этих массивов значения всех элементов больше заданной величины h.
- Ввод одномерного массива x. Применим известную по предыдущим примерам процедуру.
- Проверка для одномерного массива 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
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
В функции Проверка вместо инструкции цикла Do While могла бы быть применена инструкция цикла For вместе с инструкцией Exit For:
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