Поменять местами элементы главной и побочной диагонали в массиве - VBA
Формулировка задачи:
Дана матрица A[n, n]. Поменять местами элементы главной и побочной диагонали.
Выдает кучу ошибок, уже все перепробовал, что знаю, искал какие то подсказки на просторах интернета, все безуспешно
Листинг программы
- Private Sub CommandButton1_Click()
- Dim s() As Integer
- Dim f As Integer
- Dim g As Integer
- ReDim Preserve s(n, n) As Integer
- For i = 1 To n
- For j = 1 To n
- n = InputBox("Введите n", "Окно ввода", "")
- s(i, j) = Rnd() * 100 - 50
- Cells(i + 1, j + 1) = s(i, j)
- If i = j Then f(i) = s(i, j): Cells(i + 1, 8) = f(i)
- If 5 - i = j Then g(j) = s(i, j): Cells(i + 1, 9) = g(j)
- Next
- Next
- For i = 1 To n
- For j = 1 To n
- If i = j Then s(i, j) = g(j): Cells(i + 1, 11) = s(i, j)
- If 5 - i = j Then s(i, j) = f(i): Cells(i + 1, 12) = s(i, j)
- Cells(i + 7, j + 1) = s(i, j)
- Next
- Next
- End Sub
Решение задачи: «Поменять местами элементы главной и побочной диагонали в массиве»
textual
Листинг программы
- Sub diagonale()
- Dim s() As Integer, f As Integer, g As Integer, tmp
- Dim n As Integer
- With ActiveSheet
- .Cells.Font.Color = vbBlack
- .Cells.ClearContents
- End With
- n = InputBox("введите целое число n: ", Default:="4") 'сначала ввели число
- n = n - 1
- ReDim Preserve s(n, n) As Integer ' потом используя его определяем размеры массива!
- For f = 0 To n
- For g = 0 To n ' наполняем массив случайными числами
- s(g, f) = CInt(Rnd * 100)
- Next
- Next ' массив заполнен случайными целыми числами от 0 до 100
- With Range(Cells(1, 1), Cells(n + 1, n + 1))
- .Value = s()
- .Font.Color = vbBlue
- End With
- ' массив отправлен в ячейки листа!
- Range(Cells(1, n + 3), Cells(n + 1, n + n + 3)).Font.Color = vbBlue
- For f = 0 To n ' от сих
- tmp = s(f, f)
- s(f, f) = s(n - f, f)
- s(n - f, f) = tmp ' до сих происходит вся процедура замены диагоналей!
- Next
- Range(Cells(1, n + 3), Cells(n + 1, n + n + 3)).Value = s()
- ' обновленный массив отправлен в ячейки листа!
- For f = 0 To n
- Cells(f + 1, f + 1).Font.Color = vbRed ' Подкрасим для наглядности
- Cells(n - f + 1, f + n + 3).Font.Color = vbRed
- Cells(f + 1, f + n + 3).Font.Color = vbMagenta
- Cells(n - f + 1, f + 1).Font.Color = vbMagenta
- Next
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д