Сортировка двумерного массива по чётности позиций - VB

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

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

Здравствуйте! Прошу помощи. Не знаю алгоритма перестановок столбцов по чётности. Как переставлять, не вручную же, если столбцов несколько десятков?
Условия. Дана целочисленная прямоугольная матрица. Преобразовать массив таким образом, чтобы в первой его половине располагались элементы, стоявшие в четных позициях, а во второй половине — элементы, стоявшие в нечетных позициях.
У меня матрица 6*6 поэтому легко поменял местами нужные столбцы почти вручную.
Листинг программы
  1. Sub ЧётНечётСтолбцы()
  2. Dim i%, j%, a(), b() As Integer
  3. '--------------------
  4. ActiveSheet.UsedRange.EntireRow.Delete
  5. Cells.Clear
  6. [A1] = -9: [B1] = -8: [C1] = -4: [D1] = -8: [E1] = -10: [F1] = -5
  7. [A2] = 0: [B2] = 3: [C2] = 0: [D2] = 6: [E2] = -9: [F2] = 2
  8. [A3] = -7: [B3] = 3: [C3] = -1: [D3] = -3: [E3] = -8: [F3] = 9
  9. [A4] = 4: [B4] = 8: [C4] = 0: [D4] = -9: [E4] = 5: [F4] = 4
  10. [A5] = -2: [B5] = -1: [C5] = -1: [D5] = -6: [E5] = -4: [F5] = -1
  11. [A6] = -9: [B6] = 1: [C6] = -7: [D6] = 8: [E6] = -9: [F6] = 7
  12. a = Sheets(1).[A1].CurrentRegion.Value
  13. Sheets(1).[a8].Resize(6, 5) = a
  14. Range("A8:A13").Value = Range("D1:D6").Value
  15. Range("D8:D13").Value = Range("A1:A6").Value
  16. Range("C8:C13").Value = Range("F1:F6").Value
  17. Range("F8:F13").Value = Range("C1:C6").Value
  18. End Sub

Решение задачи: «Сортировка двумерного массива по чётности позиций»

textual
Листинг программы
  1. Sub echsSort()
  2. Randomize Timer
  3. Const n = 6
  4. ReDim x(n, n) As Long
  5. ReDim Z(n, n) As Long
  6.  
  7. For i = 1 To n
  8.   For j = 1 To n
  9.    x(i, j) = 18 * Rnd - 9
  10.    Cells(i, j) = x(i, j)
  11.    Z(i, j) = x(i, j)
  12.   Next j
  13. Next i
  14.  
  15. For j = 1 To n
  16.   For i = 1 To n
  17.    If j Mod 2 Then
  18.       Z(i, (j + n + 1) / 2) = x(i, j)
  19.    Else
  20.       Z(i, j / 2) = x(i, j)
  21.    End If
  22. Next i, j
  23.  
  24. For i = 1 To n
  25.   For j = 1 To n
  26.     Cells(i + 7, j) = Z(i, j)
  27.   Next j
  28. Next i
  29. End Sub

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


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

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

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

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

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

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