Поменять местами элементы главной и побочной диагонали в массиве - VBA

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

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

Дана матрица A[n, n]. Поменять местами элементы главной и побочной диагонали.
Листинг программы
  1. Private Sub CommandButton1_Click()
  2. Dim s() As Integer
  3. Dim f As Integer
  4. Dim g As Integer
  5. ReDim Preserve s(n, n) As Integer
  6. For i = 1 To n
  7. For j = 1 To n
  8. n = InputBox("Введите n", "Окно ввода", "")
  9. s(i, j) = Rnd() * 100 - 50
  10. Cells(i + 1, j + 1) = s(i, j)
  11. If i = j Then f(i) = s(i, j): Cells(i + 1, 8) = f(i)
  12. If 5 - i = j Then g(j) = s(i, j): Cells(i + 1, 9) = g(j)
  13. Next
  14. Next
  15. For i = 1 To n
  16. For j = 1 To n
  17. If i = j Then s(i, j) = g(j): Cells(i + 1, 11) = s(i, j)
  18. If 5 - i = j Then s(i, j) = f(i): Cells(i + 1, 12) = s(i, j)
  19. Cells(i + 7, j + 1) = s(i, j)
  20. Next
  21. Next
  22. End Sub
Выдает кучу ошибок, уже все перепробовал, что знаю, искал какие то подсказки на просторах интернета, все безуспешно

Решение задачи: «Поменять местами элементы главной и побочной диагонали в массиве»

textual
Листинг программы
  1. Sub diagonale()
  2.     Dim s() As Integer, f As Integer, g As Integer, tmp
  3.     Dim n As Integer
  4.     With ActiveSheet
  5.     .Cells.Font.Color = vbBlack
  6.     .Cells.ClearContents
  7.     End With
  8.     n = InputBox("введите целое число n: ", Default:="4") 'сначала ввели число
  9.    n = n - 1
  10.     ReDim Preserve s(n, n) As Integer ' потом используя его определяем размеры массива!
  11.    
  12.     For f = 0 To n
  13.         For g = 0 To n ' наполняем массив случайными числами
  14.            s(g, f) = CInt(Rnd * 100)
  15.         Next
  16.     Next ' массив заполнен случайными целыми числами от 0 до 100
  17.  
  18.     With Range(Cells(1, 1), Cells(n + 1, n + 1))
  19.     .Value = s()
  20.     .Font.Color = vbBlue
  21.     End With
  22.     ' массив отправлен в ячейки листа!
  23.    Range(Cells(1, n + 3), Cells(n + 1, n + n + 3)).Font.Color = vbBlue
  24.     For f = 0 To n        ' от сих
  25.        tmp = s(f, f)
  26.         s(f, f) = s(n - f, f)
  27.         s(n - f, f) = tmp ' до сих происходит вся процедура замены диагоналей!
  28.    Next
  29.     Range(Cells(1, n + 3), Cells(n + 1, n + n + 3)).Value = s()
  30.     ' обновленный массив отправлен в ячейки листа!
  31.    For f = 0 To n
  32.         Cells(f + 1, f + 1).Font.Color = vbRed  ' Подкрасим для наглядности
  33.        Cells(n - f + 1, f + n + 3).Font.Color = vbRed
  34.         Cells(f + 1, f + n + 3).Font.Color = vbMagenta
  35.         Cells(n - f + 1, f + 1).Font.Color = vbMagenta
  36.     Next
  37. End Sub

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


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

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

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

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

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

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