что есть. внешне по другому от моего примера( Код | Const n = 7 ' размерность матрицы Dim Matrix(1 To n, 1 To n) As Integer 'описание матрицы Dim Arr(1 To n * n) As Integer 'описание массива Private Sub CreateArrayByMatrix(Matrix, Arr) 'процедура заполнения массива по матрице Dim i, j, index As Integer 'i,j - индексы для матрицы, index - текущий номер элемента массива index = 1 'инициализация индекса для массва For j = n To n \ 2 Step -1 'не далее половины размерности For i = j To n - j + 1 Step -1 'заполнение вертикальной правой части Arr(index) = Matrix(i, j) 'записываем в очередной элемент массива элемент матрицы index = index + 1 'переходим к следующему элементу Next i For i = j - 1 To n - j + 1 Step -1 'заполнение верхней горизонтальной части Arr(index) = Matrix(n - j + 1, i) index = index + 1 Next i For i = n - j + 2 To j 'заполнение вертикальной левой части Arr(index) = Matrix(i, n - j + 1) index = index + 1 Next i For i = n - j + 2 To j - 1 'заполнение нижней горизонтальной части Arr(index) = Matrix(j, i) index = index + 1 Next i Next j End Sub Private Sub CreateMatrix(ByRef Matrix) 'для проверки процедура создания матрицы по вышеописанному алгоритму Dim i, j, index As Integer index = 1 For j = n To n \ 2 + 1 Step -1 For i = j To n - j + 1 Step -1 Matrix(i, j) = index index = index + 1 Next i For i = j - 1 To n - j + 1 Step -1 Matrix(n - j + 1, i) = index index = index + 1 Next i For i = n - j + 2 To j Matrix(i, n - j + 1) = index index = index + 1 Next i For i = n - j + 2 To j - 1 Matrix(j, i) = index index = index + 1 Next i Next j End Sub Private Sub CreateRandomMatrix(ByRef Matrix) 'заполнение матрицы случайными значениями Dim i, j As Integer 'индексы For i = 1 To n For j = 1 To n Matrix(i, j) = Int(Rnd * 10) ' От 0 до 9 Next j Next i End Sub Private Sub cmdCreateArray_Click() Dim i, j As Integer 'индексы Dim strTemp As String 'строка - используется для выравнивания элементов матрицы txtOut.Text = "" 'clear CreateRandomMatrix Matrix 'заполняем матрицу случайными значениями 'печатаем матрицу txtOut.Text = "Исходная матрица:" & Chr(13) & Chr(10) For i = 1 To n For j = 1 To n strTemp = Matrix(i, j) Do While Len(strTemp) < 3 'печатаем по 3 символа на элемент strTemp = " " & strTemp 'сдвигаем к правому краю Loop txtOut.Text = txtOut.Text & strTemp 'печатаем по 3 символа на элемент Next j txtOut.Text = txtOut.Text & Chr(13) & Chr(10) 'переход на следующую строку Next i CreateArrayByMatrix Matrix, Arr 'заполняем массив по матрице 'печатаем результирующий массив txtOut.Text = txtOut.Text & "Массив-результат:" & Chr(13) & Chr(10) For i = 1 To n * n txtOut.Text = txtOut.Text & Arr(i) & " " Next i txtOut.Text = txtOut.Text & Chr(13) & Chr(10) txtOut.Text = txtOut.Text & Chr(13) & Chr(10) CreateMatrix Matrix 'заполняем матрицу 'печатаем матрицу txtOut.Text = txtOut.Text & "Исходная матрица:" & Chr(13) & Chr(10) For i = 1 To n For j = 1 To n strTemp = Matrix(i, j) Do While Len(strTemp) < 3 'печатаем по 3 символа на элемент strTemp = " " & strTemp 'сдвигаем к правому краю Loop txtOut.Text = txtOut.Text & strTemp 'печатаем по 3 символа на элемент Next j txtOut.Text = txtOut.Text & Chr(13) & Chr(10) 'переход на следующую строку Next i CreateArrayByMatrix Matrix, Arr 'заполняем массив по матрице 'печатаем результирующий массив txtOut.Text = txtOut.Text & "Массив-результат:" & Chr(13) & Chr(10) For i = 1 To n * n txtOut.Text = txtOut.Text & Arr(i) & " " Next i End Sub
Private Sub Form_Load() Randomize 'инициализация генератора случайных чисел End Sub
|
Присоединённый файл ( Кол-во скачиваний: 0 )
Array.zip 2,21 Kb
|