Задача 22. Дана матрица размером 5 x 5. Посчитать среднее значение элементов матрицы, расположенных строго ниже главной диагонали.
Решение. Для каждой строки этого куска матрицы номера столбцов нужных элементов изменяются от первого до пересекающегося с диагональю. На диагонали номер столбца совпадает с номером строки, т.е. j = i . Поскольку диагональ по условию не включена, то j изменяется не до i, а до i – 1.
Sub Матрица()
Dim M(5, 5) As Integer, S As Integer, k As Integer, Avg As Single
For i = 1 To 5
For j = 1 To 5
M(i,j) = InputBox("Введите элемент матрицы М(" & i & "," & j & ")")
Next
Next
S = 0
k = 0
For i = 2 To 5 ‘номера строк берутся от 2 до конца матрицы
For j = 1 To i – 1 ‘номера столбцов берутся от 1 до диагонали
S = S + M(i, j)
k = k + 1
Next
Next
Avg = S / k
MsgBox "Среднее значение = " & Avg
End Sub
Задача 23. Обнулить элементы матрицы А(5 x 5), лежащие правее ее главной диагонали и левее побочной, включая диагональные элементы.
Решение. Диагонали делят матрицу на 4 части, в задаче требуется обнулить верхнюю четверть. Обратите внимание, что для каждой строки этого куска обнуляются элементы, лежащие между диагоналями, т.е. из столбцов с номерами: для 1-ой строки – от 1 до 5, для 2-ой строки – от 2 до 4, для 3-ей - от 3 до 3, т.е., в общем случае, для i –той строки –от i до 5-i+1.
Программа:
Sub matrixKvota()
Dim i, j, A(5, 5) As Integer
For i = 1 To 5
For j = 1 To 5
A(i, j) = Cells(i, j) ‘ввод матрицы
Next
Next
For i = 1 To 3 ‘номера строк берутся от 1 до середины матрицы
For j = i To 5 - i + 1 ‘номера столбцов берутся от главной до побочной диагонали
A(i, j) = 0
Next
Next
For i = 1 To 5
For j = 1 To 5
Cells(i, j) = A(i, j) ‘вывод матрицы
Next
Next
End Sub
Задачи для самостоятельной работы:
1. Посчитать количество нулевых элементов в матрице А(5x5).
2. Перенести элементы, кратные трем, из массива А(5x 5) в массив В.
3. Обнулить элементы матрицы М(5x 5), лежащие ниже ее побочной диагонали, включая диагональные.
4. Поменять местами симметрично элементы верхней четверти и нижней четверти матрицы А(5x5), разделенной диагоналями на четыре части.
Лабораторная работа № 8. Задачи с данными строкового типа