x3 aka a-droo
11-12-2011, 23:36
Столкнулся с проблемой
вобщем нужно отсортировать двумерный массив по убыванию модулей элементов
пока смог сделать только такую сортировку при которой элементы массива заменяются их модулями, а как я понимаю из условия задачи "Упорядочить матрицу по убыванию модулей элементов" нужно оставить все значения как и были , но при этом упорядочить по значениям их модулей.
делал по аналогии с вот этим
Dim indM, k, i, arr() As Single
n = 5
ReDim arr(1 To n)
arr(1) = 4
arr(2) = -3
arr(3) = 0
arr(4) = 3
arr(5) = -10
Dim Min As Single
For i = 1 To n - 1
Min = arr(i)
k_min = i
For j = i + 1 To n
If arr(j) < Min Then
Min = arr(j)
k_min = j
End If
Next
arr(k_min) = arr(i)
arr(i) = Min
Next
ну и пример на матрицах , как я понял условие
ВВОДИМ
3 -4 5
2 6 -9
7 -8 -1
ПОЛУЧАЕМ
-9 -8 7
6 5 -4
3 2 -1
а вот ,что получается в моей проге
9 8 7
6 5 4
3 2 1
у элементов с отрицательным значением теряются минусы,а их нужно оставить.
Sub Sort()
ReDim B(1 To m * n)
For i = 1 To m 'преобразуем в одномерный
For j = 1 To n
B(j + (i - 1) * n) = A(i, j)
Next j
Next i
For i = 1 To m * n - 1 'сортирую
Min = Abs(B(i))
k_min = i
For j = i + 1 To m * n
If Abs(B(j)) > Min Then
Min = Abs(B(j))
k_min = j
End If
Next
B(k_min) = Abs(B(i))
B(i) = Min
Next
For i = 1 To m 'преобразуем в двумерный
For j = 1 To n
A(i, j) = B(j + (i - 1) * n)
Next j
Next i
ListBox3.ColumnCount = n 'вывод
ListBox3.List = A
End Sub
вобщем нужно отсортировать двумерный массив по убыванию модулей элементов
пока смог сделать только такую сортировку при которой элементы массива заменяются их модулями, а как я понимаю из условия задачи "Упорядочить матрицу по убыванию модулей элементов" нужно оставить все значения как и были , но при этом упорядочить по значениям их модулей.
делал по аналогии с вот этим
Dim indM, k, i, arr() As Single
n = 5
ReDim arr(1 To n)
arr(1) = 4
arr(2) = -3
arr(3) = 0
arr(4) = 3
arr(5) = -10
Dim Min As Single
For i = 1 To n - 1
Min = arr(i)
k_min = i
For j = i + 1 To n
If arr(j) < Min Then
Min = arr(j)
k_min = j
End If
Next
arr(k_min) = arr(i)
arr(i) = Min
Next
ну и пример на матрицах , как я понял условие
ВВОДИМ
3 -4 5
2 6 -9
7 -8 -1
ПОЛУЧАЕМ
-9 -8 7
6 5 -4
3 2 -1
а вот ,что получается в моей проге
9 8 7
6 5 4
3 2 1
у элементов с отрицательным значением теряются минусы,а их нужно оставить.
Sub Sort()
ReDim B(1 To m * n)
For i = 1 To m 'преобразуем в одномерный
For j = 1 To n
B(j + (i - 1) * n) = A(i, j)
Next j
Next i
For i = 1 To m * n - 1 'сортирую
Min = Abs(B(i))
k_min = i
For j = i + 1 To m * n
If Abs(B(j)) > Min Then
Min = Abs(B(j))
k_min = j
End If
Next
B(k_min) = Abs(B(i))
B(i) = Min
Next
For i = 1 To m 'преобразуем в двумерный
For j = 1 To n
A(i, j) = B(j + (i - 1) * n)
Next j
Next i
ListBox3.ColumnCount = n 'вывод
ListBox3.List = A
End Sub