Среднее арифметическое в строке с отрицательным элементом - VBA
Формулировка задачи:
Всем привет
Вроде почти все допилил, а на выходе какая-то ересь, подскажите, что не так
Условие задачи: дана матрица Z(5,4).
Если в строке есть отрицательный элемент, найти среднее арифметическое ненулевых элементов этой строки и вывести эти значения в отдельный массив.
Что есть: исходная матрица и массив с переопределением размерности в ходе программы.
Листинг программы
- Option Base 1
- Sub Lab()
- Cells.Clear
- Dim Z(5, 4) As Integer
- Dim P() As Integer
- Dim i, j, k, x, l, n, t, sum As Integer
- Dim Check As Boolean
- For i = 1 To 5
- For j = 1 To 4
- Randomize
- Z(i, j) = Int(20 * Rnd - 10)
- Cells(i, j) = Z(i, j)
- Next j
- Next i
- k = 0
- For i = 1 To 5
- sum = 0
- Check = False
- For j = 1 To 4
- If Z(i, j) < 0 Then
- Check = True
- End If
- Next j
- If Check Then
- k = k + 1
- ReDim Preserve P(k)
- For n = 1 To k
- For j = 1 To 4
- If Z(i, j) <> 0 Then
- sum = sum + Z(i, j)
- x = x + 1
- End If
- Next j
- l = sum / x
- P(n) = l
- Cells(n, 6) = P(n)
- Next n
- End If
- Next i
- End Sub
Я так понял, выполняя код, программа в каждый элемент массива записывает среднее арифметическое элементов всей матрицы.
Решение задачи: «Среднее арифметическое в строке с отрицательным элементом»
textual
Листинг программы
- Sub test()
- Dim Z As Variant
- Dim isExist As Boolean
- Dim result() As Variant
- Dim cnt As Integer
- Dim srZ As Variant
- Dim n As Integer
- ReDim Z(1 To 5, 1 To 4)
- For i = 1 To 5
- For j = 1 To 4
- Randomize
- Z(i, j) = Int(20 * Rnd - 10)
- Next j
- Next i
- Range(Range("A1"), Range("A1").Offset(UBound(Z) - 1, UBound(Z, 2) - 1)) = Z
- For i = 1 To 5
- isExist = False
- cnt = 0
- srZ = 0
- For j = 1 To 4
- If Z(i, j) <> 0 Then
- srZ = srZ + Z(i, j)
- cnt = cnt + 1
- End If
- If Z(i, j) < 0 Then
- isExist = True
- End If
- Next j
- If isExist Then
- n = n + 1
- ReDim Preserve result(1 To n)
- result(n) = srZ / cnt
- End If
- Next i
- Range(Range("F1"), Range("F1").Offset(UBound(result) - 1, 0)) = WorksheetFunction.Transpose(result)
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д