
Динамічні масиви
Якщо у програмі неможливо передбачити максимальну кількість елементів масиву, то його треба описати як динамічний масив, тобто масив із змінною кількістю елементів. Роботу з динамічними масивами можна розбити на два кроки.
На першому кроці описується масив за допомогою оператора Dim, де після імені масиву йдуть пусті дужки і тип його елементів. Наприклад:
Dim a( ) as Single
На другому кроці у тій частині програми, де використовується цей масив, задається його розмір за допомогою оператора ReDim а(n). Параметр n має мати числове значення. Після цього кількість елементів масиву змінюється. Якщо нова кількість елементів більша за стару, то виділяється додаткова пам’ять для нових елементів. Якщо нова кількість менша за стару, тоді частина елементів буде втрачена.
Хід роботи
Варіант 1.
Побудувати квадратну матрицю А, елементи якої задаються формулою:
Обчислити добуток елементів матриці А.
Знайти найбільший елемент серед елементів матриці А, розміщених під головною діагоналлю.
Побудувати одновимірний масив В із елементів k-го стовпця матриці А і обчислити середнє арифметичне значення елементів масиву В.
Private Sub Run_Click()
Dim a(50, 50) As Single, b(50) As Single
n = Val(txtn)
p = 1: d = 1
For i = 1 To n
p = p * i
s = 0
For j = 1 To n
s = s + j
a(i, j) = p / s
‘обчислення добутку елементів матриці А
d = d * a(i, j)
Next j
Next i
Print "d=", d
‘Знаходження найбільшого елемента серед елементів
‘матриці А, розміщених під головною діагоналлю
Max = a(2, 1)
For i = 2 To n
For j = 1 To i-1
If a(i, j) > Max Then
Max = a(i, j)
End If
Next j
Next i
Print "max=", Max
‘Побудова одновимірного масив В із елементів k-го стовпця
‘і обчислення середнього арифметичного елементів масиву В
k = Val(txtk)
s = 0
For i = 1 To n
b(i) = a(i, k)
s = s + b(i)
Next i
sа = s / n
Print "середнє арифметичне=", sа
End Sub
Варіант 2.
Побудувати матрицю А, елементи якої задаються формулою:
Обчислити суму елементів k-го рядка матриці А.
Знайти індекси найбільшого елемента матриці А.
Побудувати вектор В із елементів матриці А, сума індексів яких менша за задане число
і обчислити добуток елементів цього вектора.
Private Sub Run_Click()
Dim b() As Single, a(50, 50) As Single
n = Val(txtn): m = Val(txtm)
k1=val(txtk1): x = Val(txtx)
For i = 1 To n
p = 1
For j = 1 To m
p = p * j
a(i, j) = i + Sin(p * x)
Next j
Next i
‘Обчислення суми елементів k-го рядка матриці А
k = Val(txtk)
s = 0
For j = 1 To m
s = s + a(k, j)
Next j
Print "S=", s
Print "_________________"
‘Знажодження індексів найбільшого елемента матриці А
Max = a(1, 1): imax = 1: jmax = 1
kilk = 0
For i = 1 To n
For j = 1 To m
If a(i, j) > Max Then
Max = a(i, j): imax = i: jmax = j
End If
‘Обчислення розмірності вектора В
If i + j < k1 Then kilk = kilk + 1
Next j
Next i
Print "imax=", imax
Print "jmax=", jmax
Print "_________________"
‘Побудова вектора В із елементів матриці А, сума індексів
‘яких ‘менша за k1 і обчислення добутку елементів вектора В
Print kilk
ReDim b(kilk)
r = 0
p = 1
For i = 1 To n
For j = 1 To m
If i + j < k1 Then
r = r + 1
b(r) = a(i, j)
p = p * b(r)
End If
Next j
Next i
Print "p=", p
End Sub