ТОП 10:

Використання масивів та матриць



Масив— це група однотипних елементів, об’єднаних одним іменем і впорядкованих за індексами, які визначають місце розташування елемента у групі.У мові VBA будь-який масив має власне ім’я і складається із декількох елементів. Кожен елемент масиву має ім’я та номер (індекс), який записано у круглих дужках. Наприклад, А(1), Numer (5). Такий масив називається одновимірним. У мові VBA нумерація елементів у масиві починається з нуля, але за допомогою оператора Option Base 1 можна змінити початковий індекс.

Крім одновимірних масивів у мові VBA можна створювати багатовимірні масиви, що мають два і більше індексів. У масиві з двома індексами дані представлені у вигляді прямокутної таблиці, що має рядки та стовпці. Якщо кількість рядків дорівнює кількості стовпців, то масив називається матрицею.

Мова VBA підтримує два типи масивів — статичні та динамічні. Використання динамічних масивів є доцільниму випадках: 1) коли розмір масиву невідомий до моменту виконання програми; 2) якщо в ході виконання програми розмір масиву буде змінюватися; 3)якщо при виконанні програми після завершення використання масиву необхідно звільнити пам’ять.

Для статичних масивів розмірність, вказана при їх оголошенні, залишається фіксованою впродовж виконання програми. Для оголошення масиву фіксованої розмірності вказують у круглих дужках після його імені конкретні розміри. Наприклад:

'Одновимірний масив з 51 элемента

Dim M1(50) As Integer

'Двовимірний масив з 11 рядків по 21 елементу

Dim M2(10,20) As Integer

При оголошенні динамічного масиву його розмірність після імені не вказується, наприклад:

Dim M1 () As Single

Перед використанням динамічного масиву у процедуру вписують оператор ReDim, який визначає фактичну розмірність масиву, наприклад:

ReDim M1(5) 'одновимірний масив з 6 елементів

ReDim M1(1 ТО 6, 1 То 10) 'двовимірний масив з 60 елементів

При повторному визначені масиву його вміст знищується. Для збереження вже існуючих даних вказують ключове слово Preserve.

Dim M() As Single

ReDim M(1 To 10, 1 To 20)

ReDim Preserve M(1To 10, 1 To 50)

Для оголошення констант використовують ключове слово Const, наприклад:

Const КilkistVydNarahuvan =16

Const VydNarahuvan= "Нарахування премії"

Приклад 1.Обчислити середнє геометричне елементів одновимірного масиву Y, які задовольняють умові yi>0. Середнє геометричне розраховується за формулою

Таблиця ідентифікаторів:

Змінна алгоритму Кількість елементів у масиві Добуток елементів масиву, що відповідають умові yi>0 Кількість елементів масиву, що відповідають умові yi>0 Заданий масив Номер елементу масиву -параметр циклу
Ідентифікатор n D p Y(20) i
Тип integer single integer integer integer

Текст програми:

Sub Odnovymirniy_masiv()

' Оголошення змінних

Dim Y(20) As Integer

Dim n As Integer, i As Integer, p As Integer

Dim D As Single, S As Single

' Уведення даних

n = InputBox("Задайте кiлькiсть елементiв n=")

' Встановлення початкового значення добутку та кількості елементів, що відповідають умові

D = 1

p = 0

For i = 1 To n

Y(i) = InputBox("Задайте елемент масива Y(" + Str(i) + ")=")

If Y(i) > 0 Then

D = D * Y(i)

p = p + 1

End If

Next i

s = D ^(1/p)

MsgBox ("Середнє геометричне s=" + Str(s))

End Sub

Контрольний приклад

Y=

Виконання обчислень для даних тестового прикладу.

Задайте кiлькiсть елементiв n=6

Задайте елемент масива Y[1]=2;

Задайте елемент масива Y[2]=-54;

Задайте елемент масива Y[3]=4;

Задайте елемент масива Y[4]=-6;

Задайте елемент масива Y[5]=4;

Задайте елемент масива Y[6]=0;

Результат:

Приклад 2.Знайти в кожному рядку масиву F(N,M), N£20, M£10 мінімальний та максимальний елементи у кожному рядку і розмістити їх на місці першого та останнього елементів рядка відповідно. Масив надрукувати у звичайному вигляді.

Таблиця ідентифікаторів:

Змінна алгоритму Кількість рядків у масиві Кількість стовпців у масиві Номер максим елементу в рядку A(20,10) i j min max Номер мінім елементу в рядку k K1
Ідентифікатор n m p A(20,10) i j min max o k K1
Тип integer integer integer integer integer integer integer integer integer integer integer

 

Текст програми

 

Sub Matrix()

' оголошення змінних

Dim A(20, 10) As Single

Dim B(20, 10) As Single

Dim n As Integer, m As Integer

Dim i As Integer, j As Integer, p As Integer,

Dim K1 As Integer, k As Integer, o As Integer

Dim min As Single

Dim max As Single

n = InputBox("уведіть кількість рядків n=")

m = InputBox("уведіть кількість стовпців m=")

For i = 1 To n

For j = 1 To m

A(i, j) = InputBox("уведіть елемент масивуA(" + Str(i) + "," + Str(j) + ")=")

Next j

Next i

For i = 1 To n

min = A(i, 1)

max = A(i, 1)

p = 1

o = 1

For j = 1 To m

If (A(i, j) < min) Then

min = A(i, j)

p = j

End If

If (A(i, j) > max) Then

max = A(i, j)

o = j

End If

Next j

k = A(i, p)

k1 = A(i, o)

A(i, o) = k1

A(i, p) = k

A(i, 1) = min

A(i, m) = max

Next i

For i = 1 To n

For j = 1 To m

B(i, j) = A(i, j)

MsgBox ("Елемент масиву B(" + Str(i) + "," + Str(j) + ")=" + Str(B(i, j)))

Next j

Next i

End Sub

Контрольний приклад. Задано масив А

Виконання програми для даних контрольного прикладу:

Задайте кiлькiсть рядкiв матрицi n=4;

Задайте кiлькiсть стовбцiв матрицi m=6;

Задайте елемент масиву А[1,1]=1;

Задайте елемент масиву А[1,2]=5;

Задайте елемент масиву А[1,3]=45;

Задайте елемент масиву А[1,4]=7;

Задайте елемент масиву А[1,5]=11;

Задайте елемент масиву А[1,6]=0;

Задайте елемент масиву А[2,1]=65;

Задайте елемент масиву А[2,2]=4;

Задайте елемент масиву А[2,3]=25;

Задайте елемент масиву А[2,4]=3;

Задайте елемент масиву А[2,5]=1;

Задайте елемент масиву А[2,6]=5;

Задайте елемент масиву А[3,1]=1;

Задайте елемент масиву А[3,2]=22;

Задайте елемент масиву А[3,3]=5;

Задайте елемент масиву А[3,4]=4;

Задайте елемент масиву А[3,5]=0;

Задайте елемент масиву А[3,6]=9;

Задайте елемент масиву А[4,1]=7;

Задайте елемент масиву А[4,2]=5;

Задайте елемент масиву А[4,3]=2;

Задайте елемент масиву А[4,4]=1;

Задайте елемент масиву А[4,5]=4;

Задайте елемент масиву А[4,6]=4;

Після виконання програми отримуємо новий масив В:

 







Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.237.186.116 (0.012 с.)