VB 6 Массив (5х5) с сортировкой по диагонали

Нубяра

Новый пользователь
Сообщения
3
Симпатии
0
Баллы
1
#1
Помогите, не понимаю как сделать((
Сообщения объединены:

 
Последнее редактирование:

Кирилл

Команда форума
Администратор
Сообщения
13,510
Симпатии
5,988
Баллы
843
#2
У вас какая то минимальная наработка есть?
Диагональ какая?
0.0
1.1
2.2.
3.3.
4.4.
5.5
Так ? В чем затык?
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,863
Симпатии
5,720
Баллы
588
#3
Вот в Excel с подсветкой хода алгоритма:

VB.NET:
Option Explicit

Const N As Long = 5

Private Sub Form_Load()
    Dim a(0 To N - 1, 0 To N - 1) As Long
    Fill a
    PrintM a
    Sort1 a
    Sort2 a
    PrintM a
End Sub

Private Sub Fill(a() As Long)
    'заполнение матрицы
    Dim i As Long, j As Long
    For i = 0 To UBound(a, 1)
        For j = 0 To UBound(a, 2)
            a(i, j) = Int(Rnd * 10)
        Next
    Next
End Sub

Private Sub PrintM(a() As Long)
    'печать матрицы
    Dim i As Long, j As Long
    For i = 0 To UBound(a, 1)
        For j = 0 To UBound(a, 2)
            Cells(i + 1, j + 1) = a(i, j)
        Next
    Next
End Sub

Private Sub Sort1(a() As Long)
    Dim i As Long
    Dim j As Long
    Dim t As Long

    'сортировка по основной диагонали
    For i = 0 To N - 1
        For j = i + 1 To N - 1
            ClearInterior
            Cells(j + 1, j + 1).Interior.Color = vbRed
            Cells(i + 1, i + 1).Interior.Color = vbRed
            Stop
            If a(j, j) < a(i, i) Then
                t = a(j, j)
                a(j, j) = a(i, i)
                a(i, i) = t
            End If
         Next
     Next
    
     ClearInterior
End Sub

Private Sub Sort2(a() As Long)
    Dim i As Long
    Dim j As Long
    Dim t As Long
  
    'сортировка по побочной диагонали
    For i = 0 To N - 2
        For j = i + 1 To N - 1
            ClearInterior
            Cells(j + 1, N - j).Interior.Color = vbRed
            Cells(i + 1, N - i).Interior.Color = vbRed
            Stop
            If a(j, N - 1 - j) < a(i, N - 1 - i) Then
                t = a(j, N - 1 - j)
                a(j, N - 1 - j) = a(i, N - 1 - i)
                a(i, N - 1 - i) = t
            End If
        Next
    Next
    
    ClearInterior
End Sub

Sub ClearInterior()
    'очистка заливки поля
    Dim i As Long, j As Long
    For i = 1 To 5
        For j = 1 To 5
            Cells(i, j).Interior.Color = vbWhite
        Next
    Next
End Sub
 

Нубяра

Новый пользователь
Сообщения
3
Симпатии
0
Баллы
1
#4
А вы можете в vb6 переделать?

// Предупреждение: чрезмерное цитирование. Не нужно цитировать огромные сообщения целиком.
 
Последнее редактирование модератором:

Нубяра

Новый пользователь
Сообщения
3
Симпатии
0
Баллы
1
#5
Затык в том что я не программист, а училка сказала сделать, но я вообще не понял ничего, написано массив 5 на 5 с сортировкой по главной диагонали, а че это значит не знаю
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
5,863
Симпатии
5,720
Баллы
588
#6
Нубяра, на нашем форуме помогают в написании программ, но не выполняют задания вместо другого человека. Такое обычно практикуется платно.
Код VBA практически полностью совместим с VB6. Чтобы он работал в VB6 достаточно убрать лишнее. Об этом вам скажет компилятор.
Вы можете создать макрос Excel и наочно увидеть, как работает сортировка.
Сортировка по диагоналям ничем не отличается от сортировки по строкам или колонкам. Просто здесь меняются между собой значения, которые расположены в позициях диагонали, а не горизонтали или вертикали.
Если у вас есть какой-то более конкретный вопрос, задавайте...
 
Последнее редактирование:
Сверху Снизу