Из данной матрицы построить новую матрицу, по среднему арифметическому соседей - VBA

Узнай цену своей работы

Формулировка задачи:

Друзья нужна ваша помощь, в общем задача такая. У каждого элемента есть соседи у некоторых слева, справа, снизу, сверху у некоторых только справа и снизу, в общем нужно обновить каждый элемент матрицы по среднему арифметическому его соседей. написал вот так вот, почему то работает не правильно!
Листинг программы
  1. Sub Matrix()
  2. Dim i As Byte, j As Byte
  3. Dim M() As Single, arf As Single, k As Single, n As Integer, b As Integer
  4. Dim s As String
  5. k = 0
  6. n = InputBox("Введите количество строк: ")
  7. b = InputBox("Введите количество столбцов: ")
  8. ReDim M(n, b)
  9. For i = 1 To n
  10. For j = 1 To b
  11. M(i, j) = InputBox("x(" & i & ", " & j & ")")
  12. Next
  13. Next
  14. For i = 1 To n
  15. For j = 1 To b
  16. If i - 1 > 0 Then
  17. arf = arf + M(i - 1, j)
  18. k = k + 1
  19. End If
  20. If j - 1 > 0 Then
  21. arf = arf + M(i, j - 1)
  22. k = k + 1
  23. End If
  24. If i + 1 <= n Then
  25. arf = arf + M(i + 1, j)
  26. k = k + 1
  27. End If
  28. If j + 1 <= b Then
  29. arf = arf + M(i, j + 1)
  30. k = k + 1
  31. End If
  32. M(i, j) = arf / k
  33. k = 0
  34. arf = 0
  35. Next
  36. Next
  37. For i = 1 To n
  38. For j = 1 To b
  39. MsgBox (M(i, j))
  40. Next
  41. Next
  42. End Sub

Решение задачи: «Из данной матрицы построить новую матрицу, по среднему арифметическому соседей»

textual
Листинг программы
  1. Sub Matrix()
  2. Dim i As Long, j As Long
  3. Dim arf As Double, k As Long, n As Long, b As Long
  4.   n = InputBox("Введите количество строк: ", , 4)
  5.   b = InputBox("Введите количество столбцов: ", , 3)
  6.   ReDim M(1 To n, 1 To b) As Double, X(1 To n, 1 To b) As Double
  7.   For i = 1 To n
  8.     For j = 1 To b
  9.       M(i, j) = InputBox("x(" & i & ", " & j & ")", , Round(Rnd * 10, 1))
  10.     Next
  11.   Next
  12.   On Error Resume Next
  13.   For i = 1 To n
  14.     For j = 1 To b
  15.       arf = arf + M(i - 1, j)
  16.       If Err Then Err.Clear Else k = k + 1
  17.       arf = arf + M(i, j - 1)
  18.       If Err Then Err.Clear Else k = k + 1
  19.       arf = arf + M(i + 1, j)
  20.       If Err Then Err.Clear Else k = k + 1
  21.       arf = arf + M(i, j + 1)
  22.       If Err Then Err.Clear Else k = k + 1
  23.       X(i, j) = arf / k
  24.       k = 0
  25.       arf = 0
  26.     Next
  27.   Next
  28.   'вывод на лист Excel
  29.  Cells(1, 1).Resize(n, b).Value = M
  30.   Cells(n + 2, 1).Resize(n, b).Value = X
  31.   'For i = 1 To n
  32.  '    For j = 1 To b
  33.  '        MsgBox (M(i, j))
  34.  '    Next
  35.  'Next
  36. End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.8 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы