ВУЗы и колледжи

vba информатика

найти произведение ненулевых элементов квадратной матрицы порядка NxN , расположенных выше главной диагонали!
Sub test()
Dim n, m, ni, mi, ms, sarray, proizv As Integer
n = 4 'столбцы
m = n 'строки
Dim array_Matrix(4, 4) As Variant ' заполним массив из листа
For ni = 1 To n
For mi = 1 To m
array_Matrix(mi, ni) = ThisWorkbook.Worksheets("test").Cells(mi, ni).Value
' MsgBox "Элемент матрицы с M = " & mi & " N = " & ni & " равен: " & array_Matrix(mi, ni)
Next mi
Next ni
proizv = 0 ' установим начальное произведение
For ni = 2 To n ' начнем бежать по столбцам со второго, т. к. "Выше главной диаганали" начинается со второго столбца
For msi = 1 To ni - 1 ' начнем перегонять построчно по правилу количество строк = столбец -1
'Debug.Print "Столбец: " & ni & " Используем строк: " & msi
'Debug.Print "Текущая формула: " & proizv & " = " & proizv & " * " & array_Matrix(ni, msi)
If array_Matrix(msi, ni) <> 0 Then ' проверка на не нулевой элемент массива
If proizv = 0 Then ' проверка на первичное положение переменной произведения. Если она равна 0, то присовим едениченое значение
proizv = 1
End If
proizv = proizv * array_Matrix(msi, ni) ' Умножим имеющееся ранее произведение на текущий не нулевой элемент массива
'Debug.Print "Условие ненулевого значения элемента выполнено. следовательно произведение = " & proizv
'Debug.Print "_"
End If
Next msi
Next ni
If proizv <> 0 Then
MsgBox "Произведение равно = " & proizv
Else
MsgBox "Все элементы нулевые"
End If
End Sub
*** ***
*** ***
367
Лучший ответ
моя курсовая почти на твою задачу похожа..)) ) тока у меня на С++