Есть задача по матрице: вводишь все ее элементы и надо получить новую путем деления всех элементов введенной матрицы на среднее арифм. ее побочной диагонали. Не могу найти ср. арифм. для побочной диагонали...
Вот пример для главной диагонали:
Dim a(3, 3) As Single
Dim b(3, 3) As Single
Dim i As Integer
Dim g As Integer
Private Sub Command1_Click()
For i = 1 To 3
For g = 1 To 3
a(i, g) = Val(InputBox("Введите число", "Матрица"))
Next g
Next i
For i = 1 To 3
Print Tab; a(i, 1); a(i, 2); a(i, 3)
Next i
End Sub
Private Sub Command2_Click()
s = 0
For i = 1 To 3
For g = 1 To 3
If i = g Then s = s + a(i, g) / 3
Next g
Next i
For i = 1 To 3
For g = 1 To 3
b(i, g) = a(i, g) / s
Next g
Next i
For i = 1 To 3
Print
Print
Print b(i, 1); Tab; b(i, 2); Tab; b(i, 3)
Next i
End Sub
Это не жизнь, это код, здесь все начинается с "нуля"!
С единицы же тоже можно. Никто не запрещает. К тому же, для ясности можно написать так: Dim a(1 to 3, 1 to 3) As Single или на худой конец в начало модуля кинуть Option Base 1. Хотя это совершенно не важно - нулевые элементы, конечно, создаются, но никак не мешают (в данном случае).
For i = 0 to 3
s = s + a(i,i)/3
Next
Если матрица введена от 1 до 3, то этот код будет неправильным. Точнее, он посчитает нужное, но просто из-за того, что нулевой элемент равен нулю.
For i = 1 To 3
For g = 1 To 3
If i = g Then s = s + a(i, g) / 3
Next g
Next i
Этот код просканирует главную диагональ. А нужно - побочную.
For i = 1 to 3
s = s + a(i, 4-i) / 3
Next i
PS. Ну и бессмысленные задания все-таки дают. Зачем может понадобиться такого рода действие - не представляю. Однако я тоже когда-то такие задачки решал. И как-то тогда эта бессмысленность не убивала.