Вычисление суммы, произведения, количества, минимума и максимума в двумерных массивах
Сумма, произведение, количество, минимум и максимум в двумерных массивах вычисляются точно так же, как и в одномерных, только после задания начальных значений нужно открыть не один, а два цикла (по строкам и по столбцам).
S = 0 : P = 1 : K = 0 : Min = 32000 : Max = – 32000
For i = 1 To N
For j = 1 To N
S = S + x(i, j)
P = P * x(i, j)
K = K + 1
If x(i, j) < Min Then Min = x(i, j)
If x(i, j) > Max Then Max = x(i, j)
Nextj
Nexti
Пример
Задана целочисленная матрица X(5, 5). Вычислить значение выражения
,
где Р – произведение четных элементов матрицы; S– сумма нечетных элементов;Max– максимальный из положительных элементов;iMin,jMin– номера строки и столбца минимального элемента матрицы.
Программный код
Option Explicit
Sub PR23()
Dim X(5, 5) As Integer
Dim i As Integer, j As Integer
Dim T As Double, S As Double
Dim P As Double, Q As Double
Dim Max As Integer, Min As Integer
Dim iMin As Integer, jMin As Integer
‘ очистка ячеек электронной таблицы
Range(Cells(1, 1), Cells(100, 100)).Select
Selection.Clear
Cells(1, 1).Select
‘ ввод матрицы
For i = 1 To 5
For j = 1 To 5
Cells(i, j) = Int(Rnd * 100 – 50)
X(i, j) = Cells(i, j)
Next j
Next i
P = 1: S = 0: Max = –32000: Min = 32000
For i = 1 To 5
For j = 1 To 5
If X(i, j) Mod 2 = 0 Then P = P * X(i, j)
If X(i, j) Mod 2 <> 0 Then S = S + X(i, j)
If X(i, j) > 0 And X(i, j) > Max Then Max = X(i, j)
If X(i, j) < Min Then
Min = X(i, j)
iMin = i
jMin = j
End If
Next j
Next i
T = P * S – Max * iMin * jMin
If T >= 0 Then
Q = Sqr(T)
MsgBox ("Q=" & Q)
Else
MsgBox ("нет решения")
End If
End Sub
Диагональное вычисление в матрице
Задана матрица Y(n,n). Вычислить сумму элементов вIVчетверти, произведение четных элементов воIIчетверти, поменять местами минимальный элемент вIчетверти и максимальный элемент вIIIчетверти (рис. 10).
Рис. 10. Диагональное вычисление в матрице
Программный код
Option Explicit
Sub PR24()
Dim Y(50, 50) As Integer
Dim n As Integer
Dim i As Integer, j As Integer
Dim R As Integer
Dim S As Double
Dim P As Double
Dim Min As Integer
Dim Max As Integer
Dim iMin As Integer, jMin As Integer
Dim iMax As Integer, jMax As Integer
n = Val(InputBox("введите n"))
‘ очистка ячеек
Range(Cells(1, 1), Cells(100, 100)).Select
Selection.Clear
Cells(1, 1).Select
‘ ввод матрицы
For i = 1 To n
For j = 1 To n
Cells(i, j) = Int(Rnd * 100 – 50)
Y(i, j) = Cells(i, j)
Next j
Next i
P = 1: S = 0: Max = –32000: Min = 32000
For i = 1 To n
For j = 1 To n
If (i + j < n + 1) And (i > j) Then S = S + Y(i, j)
If (Y(i, j) Mod 2 = 0) And (i < j) And (i + j > n + 1) Then P = P * Y(i, j)
If (Y(i, j) > Max) And (i > j) And (i + j > n + 1) Then
Max = Y(i, j)
iMax = i
jMax = j
End If
If (Y(i, j) < Min) And (i < j) And (i + j < n + 1) Then
Min = Y(i, j)
iMin = i
jMin = j
End If
Next j
Next i
Cells(n + 2, 1) = "Сумма="
Cells(n + 2, 3) = S
Cells(n + 3, 1) = "Произведение="
Cells(n + 3, 3) = P
‘ Перестановка минимума и максимума
R = Y(iMax, jMax)
Y(iMax, jMax) = Y(iMin, jMin)
Y(iMin, jMin) = R
Cells(n + 5, 1) = "новая матрица"
For i = 1 To n
For j = 1 To n
Cells(n + i + 6, j) = Y(i, j)
Next j
Next i
End Sub