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

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

Пример 3

Заданы три одномерных массива a(1), a(2), … , a(k), b(1), b(2), … , b(l) и c(1), c(2), … , c(m). Найти у скольких из этих массивов значения всех элементов больше заданной величины h.

  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

 

В функции Проверка вместо инструкции цикла 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