' Процедура за работа с матрица Sub Matrix



Дата15.03.2017
Размер17.19 Kb.
#17048
' Процедура за работа с матрица

Sub Matrix()

Dim Z() As Double

Dim M As Integer, N As Integer

Dim i As Integer, j As Integer

' зареждане на данни от Excel -> Sheet1

Dim W As Worksheet

Set W = Application.Worksheets("Sheet1") ' така може да се избират различни страници

W.Activate

M = 5: N = 5 ' М и N може да се въведат и от клавиатурата

ReDim Z(1 To M, 1 To N)

For i = 1 To M

For j = 1 To N

Z(i, j) = W.Cells(i, j)

Next

Next


' а) сума на всички елементи в матрицата

Dim S As Double

S = 0

For i = 1 To M



For j = 1 To N

S = S + Z(i, j)

Next

Next


MsgBox ("S=" & S)

' б) произведение на всички ненулеви елементи в матрицата

Dim P As Double

P = 1


For i = 1 To M

For j = 1 To N

If Z(i, j) <> 0 Then P = P * Z(i, j)

Next


Next

MsgBox ("P=" & P)

' в) максимум на матрицата и местоположението му (ред и стълб)

Dim Max As Double

Dim imax As Integer, jmax As Integer

Max = Z(1, 1)

imax = 1: jmax = 1

For i = 1 To M

For j = 1 To N

If Z(i, j) > Max Then Max = Z(i, j): imax = i: jmax = j

Next

Next


MsgBox ("Max=Z(" & imax & "," & jmax & ")=" & Max)

' г) минимум на матрицата и местоположението му (ред и стълб)

Dim Min As Double

Dim imin As Integer, jmin As Integer

Min = Z(1, 1)

imin = 1: jmin = 1

For i = 1 To M

For j = 1 To N

If Z(i, j) < Min Then Min = Z(i, j): imin = i: jmin = j

Next


Next

MsgBox ("Min=Z(" & imin & "," & jmin & ")=" & Min)

' д) средно аритметично на положителните елементи над главния диагонал, ако матрицата е квадратна

If M = N Then

Dim Sp As Double, Ap As Double

Dim Np As Integer

Sp = 0: Np = 0

For i = 1 To M

For j = 1 To N

If i < j Then

If Z(i, j) > 0 Then Sp = Sp + Z(i, j): Np = Np + 1

End If


Next

Next


If Np > 0 Then

Ap = Sp / Np

MsgBox ("Ap=" & Ap)

Else


MsgBox ("Няма положителни елементи")

End If


End If

' е) максимум под второстепенния диагонал, ако матрицата е квадратна

If M = N Then

Dim Max2 As Double

Max2 = Z(M, N)

For i = 1 To M

For j = 1 To N

If i + j > N + 1 Then

If Z(i, j) > Max2 Then Max2 = Z(i, j)

End If


Next

Next


MsgBox ("Max2=" & Max2)

End If


' ж) суми по редове на матрицата

Dim SR() As Double

ReDim SR(1 To M)

For i = 1 To M

SR(i) = 0

For j = 1 To N

SR(i) = SR(i) + Z(i, j)

Next


MsgBox ("SR(" & i & ")=" & SR(i))

Next


' з) минимуми по стълбове на матрицата

Dim MinK() As Double

ReDim MinK(1 To N)

For j = 1 To N

MinK(j) = Z(1, j)

For i = 2 To M

If Z(i, j) < MinK(j) Then MinK(j) = Z(i, j)

Next


MsgBox ("MinK(" & j & ")=" & MinK(j))

Next


' и) да се изведат 3те най-малки отрицателни елементи в матрицата, като се използва помощен едномерен масив D

Dim D() As Double

ReDim D(1 To M * N)

Dim L As Integer

L = 0

For i = 1 To M



For j = 1 To N

If Z(i, j) < 0 Then L = 1: D(L) = Z(i, j)

Next

Next
' сортиране на масива D във възходящ ред



Dim C As Double

For i = 1 To L - 1

For j = 1 To L - i

If D(j) < D(j + 1) Then C = D(j + 1): D(j + 1) = D(j): D(j) = C

Next

Next
' извеждане на трите най-малки елементи на масива D



If L >= 3 Then

For i = 1 To 3

MsgBox ("D(" & i & ")=" & D(i))

Next


End If

End Sub
Каталог: filebank
filebank -> Тема на дипломната работа
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> 1 3 в е к а б ъ л г а р и я“ Утвърдил
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> Доклад на национален дарителски фонд „13 века българия
filebank -> Зимна сесия – уч. 2015– 2016 г. Начало на изпитите 00 ч. Теоретична механика ІІ ч. Динамика
filebank -> Упражнение №1
filebank -> О т ч е т на проф. Д-р инж. Борислав маринов – декан на геодезическия факултет при уасг пред общото събрание на факултета
filebank -> Техническа механика
filebank -> Дати за поправителната сесия септември 2013 г катедра “Техническа механика”


Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

    Начална страница