Зараз обговорюють

"Тобто є ряд завдань, які взагалі без рекурсії не наважуються."  - це як розуміти? Перефразуй, будь ласка. 

виправив, йшлося про те що деякі завдання можна вирішити лише при використанні рекурсії

Спасибі дуже корисна стаття

А ще щось планується подібного найближчим часом?


Дякую за підтримку, радий що Вам сподобалось!

Так маю вже майже дороблений проект по управлінні Audio файлом, на заміну стандартним клавішам управління HTML5, але ще не встиг відтестувати програвання файлів з інтернету, поки лише локально працює

Надіюсь найближчим часом дороблю й закину

Рахунки

webmoneyeur - E385818210641
usd - Z304643423050
uah - U354026817492
rub - R301704373231easypay80002677bitcoin1F5HRGroUtEQW9HBNbeew8iKh5KQ8vJxzw

Зворотній зв'язок

Для покращення роботи сайту надсилайте свої зауваження:
mailЗауваження
mailПропозиція

Статистика

UkrNET - поисково-информационный ресурс

VBA : Робота з масивами, їх практичне застосування

В попередні статті ми розглянули загальні поняття про масиви (див.попередню статтю), а зараз зосередимось на більш практичному їх використанні.

Множення масиву - матриці на масив - вектор:

Дано одновимірний масив з чотирма елементами і матриця 3х4 (3 рядки, 4 стовпці). Необхідно помножити кожен елемент одновимірного масиву з відповідним елементом рядка матриці і отримати їх суму, тобто 1-й елемент множимо з першим елементом першого рядка матриці, 2-й з другим елементом першого рядка матриці і т.д. Результат вивести у вигляді вектора в вікно Immadiate(натисніть Ctrl+G в VBE для відкриття).

Sub matrixOnVector()
Dim vector(4) As Integer, newVector(4) As Integer
Dim matrix(3, 4) As Integer
Dim msg As String
Dim i As Integer, j As Integer
	'Заповнюємо масиви (вектор та матрицю)'
    vector(0) = 2: vector(1) = 4: vector(2) = 6: vector(3) = 8
    matrix(0, 0) = 4: matrix(0, 1) = 5: matrix(0, 2) = 1: matrix(0, 3) = 7
    matrix(1, 0) = 12: matrix(1, 1) = 10: matrix(1, 2) = 2: matrix(1, 3) = 9
    matrix(2, 0) = 24: matrix(2, 1) = 11: matrix(2, 2) = 6: matrix(2, 3) = 3
    msg = "Результат:" & Chr(13)
    For i = 0 To 2
        For j = 0 To 3
            newVector(i) = newVector(i) + matrix(i, j) * vector(j)
        Next j
  		'Додаємо перенесення на новий рядок chr (13)'
        msg = msg & newVector(i) & Chr(13)
    Next i
    Debug.Print msg
	'очищуємо масиви та вивільняємо оперативну пам'ять
	Erase vector, matrix, newVector
End Sub 

Створення динамічного масиву - матриці:

Двомірний масив невідомої довжини заповнюється наступним чином dynMatrix(i, j) = i * j. Розміри масиву вводяться користувачем за допомогою форми InputBox. Результат вивести в вікно Immadiate.

Sub dynMatrix()
Dim msg As String
Dim i As Integer, j As Integer, col As Integer, row As Integer
Dim dynMatrix() As Long
    msg = "Результат:" & Chr(13)
enterColCount:
    col = InputBox("Введіть кількість стовпців матриці", "Побудова матриці", 2)
	'якщо користувач введе значення менше 2 тоді запитати повторно доки не буде введено значення більше рівне 2'
    If col < 2 Then GoTo enterColCount
enterRowCount:
    row = InputBox("Введіть кількість стовпців матриці", "Побудова матриці", 2)
	'якщо користувач введе значення менше 2 тоді запитати повторно доки не буде введено значення більше рівне 2'
    If row < 2 Then GoTo enterColCount
    ReDim dynMatrix(col, row)
    For i = 1 To col
        For j = 1 To row
            dynMatrix(i, j) = i * j
            msg = msg & CStr(dynMatrix(i, j)) & Chr(9)
        Next j
        msg = msg & Chr(13)
    Next i
    Debug.Print msg
	Erase dynMatrix
End Sub 

Поворот масиву - матриці за годинниковою стрілкою:

Дано одновимірний масив з чотирма елементами і матриця 3х4 (3 рядки, 4 стовпці). Необхідно повернути його за годинниковою стрілкою, тобто перший рядок стане останнім стовпцем, другий перед останнім стовпцем і т.д. Результат вивести в вікно Immadiate.

Sub rotateMatrix()
Dim msg As String
Dim matrix() As Integer, newMatrix() As Integer
Dim row As Integer, col As Integer, i As Integer, j As Integer
row = 3
col = 4
ReDim matrix(row, col)
ReDim newMatrix(col, row)
    msg = "Результат:" & Chr(13)
    matrix(1, 1) = 4: matrix(1, 2) = 5: matrix(1, 3) = 1: matrix(1, 4) = 7
    matrix(2, 1) = 12: matrix(2, 2) = 10: matrix(2, 3) = 2: matrix(2, 4) = 9
    matrix(3, 1) = 24: matrix(3, 2) = 11: matrix(3, 3) = 6: matrix(3, 4) = 3
    For i = 1 To row
        For j = 1 To col
			'замінюємо значення рядка на стовпець нової матриці і наповняємо її з права вліво'
            newMatrix(j, row - i + 1) = matrix(i, j)
        Next j
    Next i
    For i = 1 To col
        For j = 1 To row
            msg = msg & newMatrix(i, j) & Chr(9)
        Next j
        msg = msg & Chr(13)
    Next i
    Debug.Print msg
	Erase matrix, newMatrix
End Sub 

Примітка: Даний алгоритм було застосовано для повороту фігур в грі "Tetris"

Довжина масиву:

І наостанок, для того щоб дізнатися (отримати) довжину масиву скористайтеся функцією UBound (). Запис типу UBound (vector) поверне кількість елементів одновимірного масиву. Якщо ж необхідно дізнатися довжину багатовимірного масиву, то функція набуде вигляду UBound (matrix, 2) - поверне кількість елементів другого виміру, UBound (matrix, 3) - третього і т.д. Запис же UBound (matrix, 1) рівносильна UBound (vector).

Sub getLengthMas()
Dim matrix(3, 4, 5) As Integer
    MsgBox "Розмір масиву: " & UBound(matrix, 1) & "x" & UBound(matrix, 2) & "x" & UBound(matrix, 3) & Chr(13) & "Всього елементів: " & UBound(matrix, 1) * UBound(matrix, 2) * UBound(matrix, 3)
End Sub 

view997like1dislike0 avatard_l4w clock 2016-08-30 23:12

Коментарі:



Для даної статті відсутні коментарі

Про нас

"Programmers World" розроблено з метою полегшення в освоєнні навичок програмування, та поширення матеріалів з сфери ІТ Українською мовою.

Кожен бажаючий може безкоштовно користуватися ресурсами сайту, щоб:

- Вивчати теоретичні аспекти мов програмування

- Переглядати практичне застосування теорії при виконанні різних міні проектів з відкритим кодом

- Розміщати свої завдання на форумі для допомоги в їх реалізації, або готового коду який може бути корисний іншим користувачам

- Спілкуватись з іншими користувачами та обмінюватись досвідом

Сайт функціонує на безопланій основі та ентузіазмі розробника, якщо Ви бажаєте долучитись до розвитку даного проекту то можете пожертвувати кошти на рахунки розміщені в блоці "Допомога сайту".

Сайт

Зареєстровані користувачі можуть скористатися системою діалогів, в профілі користувача, для отримання потрібної інформації. Написати!

Також Ви можете використати форми відправки Зауважень та Пропозицій.


Електронна пошта

Ви можете звертатись на нашу поштову скриньку site.programmersworld@gmail.com

www.000webhost.com