Пример 4.7.4-2. Разработать процедуру, в которой вычисляется произведение ненулевых элементов вещественного массив a().

Схема алгоритма и программный код приведены на рис. 4.7.4-2.

 

Function Pr742(ByRef a( ) As Single) As Single Dim i As Integer, z Fs Single z = 1 For i = 0 To Ubound(a) If a(i) <> 0 Then z = z * a(i) Next i End Sub Private Sub Button1_Click(…) Dim z As Single vvodSngMac15(a) : vivodSngMac17(a, ListBox1) z = Pr742(a) : vivodSngMac17 (z, TextBox1) End Sub

Рис. 4.7.4-2. Схема алгоритма и программный код процедуры Pr742()

Примера 4.7.4-2

Пример 4.7.4-3. Разработать процедуру-Function, которая находит максимальное значения элементов массива t().

Схема алгоритма и программный код приведены на рис. 4.7.4-3.

 

Sub Pr743(ByRef t() As Double) As Double Dim i, n, j, k As Integer Dim xmax As Single n = UBound(t) xmax = x(0) For i = 1 To n If x(i) > xmax Then xmax = x(i) End If Next i Return xmax End Sub

Рис. 4.7.4-3. Схема алгоритма и программный код процедуры Pr743()

Примера 4.7.4-3

Пример 4.7.4-4. Разработать процедуру-Function, которая находит индекс минимального значения элементов массива t().

 

Sub Pr744(ByRef t() Double) As Integer Dim i, n, j, k As Integer Dim xmin As Double n = UBound(t) xmin = x(0) : k = 0 `For i = 1 To n If x(i) < xmin Then xmax = x(i) k = i End If Next i Return к End Sub

Рис. 4.7.4-4. Схема алгоритма и программный код процедуры Pr744()

Примера 4.7.4-4

Пример 4.7.4-5. Разработать процедуру, которая в заданном массиве c() переставляет элементы с целыми значениями в начало массива.

Sub Pr745(ByRef с() As Single) Dim temp As Single, i, k As Integer For i = 0 To UBound(c) If c(i) - Fix(c(i)) = 0 Then temp = c(k) : c(k) = c(i) c(i) = temp : k = k + 1 End If Next i End Sub Private Sub Button1_Click(…) Dim с(9) As Single vvodSngMac15(с): vivodSngMac17(с,ListBox1) Pr7475(с) : vivodSngMac17(с,ListBox2) End Sub

Рис. 4.7.4-5. Схема алгоритма и программный код процедуры Pr745()

Примера 4.7.4-5

Для того чтобы переставить целые элементы в начало массива, в переменной k будем хранить номер элемента, в который переписывается очередное целое значение. Чтобы определить, является ли очередной элемент массива целым числом, проводится сравнение разности значения целой части очередного элемента и значения очередного элемента массива c(i) с нулем.

Целая часть значения c(i) выделяется с помощью функции Fix(). Если очередной элемент массива c(i) содержит целое значение, то производится обмен значений двух элементов массива c(k) и c(i) c помощью temp.

Схема алгоритма и программа приведены на рис. 4.7.4-5.

 

Пример 4.7.4-6. Разработать процедуру-Sub, в которой необходимо сформировать массив c(), по следующему правилу:

Схема алгоритма и программный код приведены на рис. 4.7.4-6.

 

Sub Pr746(ByRef c( )As Single) Dim i, k As Integer For i = 0 To UBound( c ) If i < 5 Then c(i) = (i^3 - 4)/(i + 1) Else c(i) = (i^2 - 36) / i End If Next i End Sub Private Sub Button1_Click(…) Dim с(9) As Single Pr746(с) vivodSngMac17(с, ListBox1) End Sub

 

Рис. 4.7.4-6. Схема алгоритма и программный код процедуры Pr746()

Примера 4.7.4-6

 

Пример 4.7.4-7. Разработать процедуру-Sub, в которой необходимо сформировать массив y(), переписав в него положительные элементы исходного массива x().

 

Sub Pr747(ByRef x() As Single, _ ByRef y() As Single) Dim i, n As Integer For i = 0 To UBound(x) If x(i) > 0 Then ReDim Preserve y(n) y(n) = x(i) : n = n + 1 End If Next i End Sub Private Sub Button1_Click(…) Dim x( ), y( ) As Single vvodSngMac15(x) vivodSngMac173(x, ListBox1) Pr747(x, y) vivodSngMac17(y, ListBox2) End Sub

Рис. 4.7.4-7. Схема алгоритма и программный код процедуры Pr747()

Пример 4.7.4-7

Для решения поставленной задачи необходимо проверить знак у всех элементов массива х(). При этом текущий индекс n формируемого массива y() меняется независимо от индекса i исходного массива х(). Индекс n увеличивается на единицу только при появлении положительного элемента х().

Таким образом, после проверки всех элементов массива х() в переменной n будет содержаться число положительных элементов исходного массива.

Схема алгоритма и программный код приведены на рис. 4.7.4-7.

 

Пример 4.7.4-8. Разработать процедуру-Sub, в которой необходимо из двух исходных массивов p() и r() с одинаковым числом элементов получить массив v() путем последовательного попарного переписывания в него элементов массивов p() и r().

В данной задаче для формирования массива v() используется переменная k, которая представляет собой номер очередного элемента массива v(). В цикле одновременно заполняются два элемента массива v(): в элемент с номером k переписывается i-й элемент из массива p(), а в элемент с номером (k+1) переписывается i-й элемент из массива r().

На рис. 4.7.4-8 приведены алгоритм и процедура и решения задачи.

 

Sub Pr748(ByRef p() As Single, _ ByRef r() As Single, ByRef v() As Single) Dim i, k As Integer For i = 0 To UBound(p) v(k) = p(i) v(k + 1) = r(i) k = k + 2 Next End Sub Private Sub Button1_Click(…) Dim p(), r(), v() As Single vvodSngMac15(p) vivodSngMac17(p, ListBox1) vvodSngMac15(r) vivodSngMac17(r, ListBox2) Pr748(p, r, v) vivodSngMac17(v, ListBox3) End Sub

 

Рис. 4.7.4-8. Схема алгоритма и программный код процедуры Pr748()

Пример 4.7.4-8