Сортировка двумерного массива по чётности позиций - VB
Формулировка задачи:
Здравствуйте!
Прошу помощи. Не знаю алгоритма перестановок столбцов по чётности. Как переставлять, не вручную же, если столбцов несколько десятков?
У меня матрица 6*6 поэтому легко поменял местами нужные столбцы почти вручную.
Условия. Дана целочисленная прямоугольная матрица. Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях.
Листинг программы
- Sub ЧётНечётСтолбцы()
- Dim i%, j%, a(), b() As Integer
- '--------------------
- ActiveSheet.UsedRange.EntireRow.Delete
- Cells.Clear
- [A1] = -9: [B1] = -8: [C1] = -4: [D1] = -8: [E1] = -10: [F1] = -5
- [A2] = 0: [B2] = 3: [C2] = 0: [D2] = 6: [E2] = -9: [F2] = 2
- [A3] = -7: [B3] = 3: [C3] = -1: [D3] = -3: [E3] = -8: [F3] = 9
- [A4] = 4: [B4] = 8: [C4] = 0: [D4] = -9: [E4] = 5: [F4] = 4
- [A5] = -2: [B5] = -1: [C5] = -1: [D5] = -6: [E5] = -4: [F5] = -1
- [A6] = -9: [B6] = 1: [C6] = -7: [D6] = 8: [E6] = -9: [F6] = 7
- a = Sheets(1).[A1].CurrentRegion.Value
- Sheets(1).[a8].Resize(6, 5) = a
- Range("A8:A13").Value = Range("D1:D6").Value
- Range("D8:D13").Value = Range("A1:A6").Value
- Range("C8:C13").Value = Range("F1:F6").Value
- Range("F8:F13").Value = Range("C1:C6").Value
- End Sub
Решение задачи: «Сортировка двумерного массива по чётности позиций»
textual
Листинг программы
- Sub echsSort()
- Randomize Timer
- Const n = 6
- ReDim x(n, n) As Long
- ReDim Z(n, n) As Long
- For i = 1 To n
- For j = 1 To n
- x(i, j) = 18 * Rnd - 9
- Cells(i, j) = x(i, j)
- Z(i, j) = x(i, j)
- Next j
- Next i
- For j = 1 To n
- For i = 1 To n
- If j Mod 2 Then
- Z(i, (j + n + 1) / 2) = x(i, j)
- Else
- Z(i, j / 2) = x(i, j)
- End If
- Next i, j
- For i = 1 To n
- For j = 1 To n
- Cells(i + 7, j) = Z(i, j)
- Next j
- Next i
- End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д