|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » VBA - VBA - Упорядочить матрицу по убыванию модулей элементов |
|
VBA - VBA - Упорядочить матрицу по убыванию модулей элементов
|
Новый участник Сообщения: 2 |
Профиль | Отправить PM | Цитировать
Столкнулся с проблемой
вобщем нужно отсортировать двумерный массив по убыванию модулей элементов пока смог сделать только такую сортировку при которой элементы массива заменяются их модулями, а как я понимаю из условия задачи "Упорядочить матрицу по убыванию модулей элементов" нужно оставить все значения как и были , но при этом упорядочить по значениям их модулей. делал по аналогии с вот этим 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 |
|
Отправлено: 23:36, 11-12-2011 |
Необычный Сообщения: 4463
|
Профиль | Сайт | Отправить PM | Цитировать Цитата x3 aka a-droo:
Цитата x3 aka a-droo:
Тогда код изменится примерно так (проверь): Что делает k_min я не понял, и честно сказать саму сортировку пока тоже не понял. На метод пузырька вроде похож, а вроде и нет. ... Ну и ладно, фиг с ним, главное, чтобы работал. |
||
------- Отправлено: 00:29, 12-12-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 2
|
Профиль | Отправить PM | Цитировать поставил ваш вариант
ситуация стала лучше, но не полностью исправилась) иногда терял минусы , иногда нет)) вот скрин http://forum.oszone.net/attachment.p...0&d=1323638011 но потом методом тыка решил убрать модуль вот в этой строке в результате вот рабочий кусок For i = 1 To m * n - 1 Min = B(i) k_min = i For j = i + 1 To m * n If Abs(B(j)) > Abs(Min) Then Min = B(j) k_min = j End If Next B(k_min) = B(i) B(i) = Min Next Огромное спасибо!) |
Отправлено: 01:16, 12-12-2011 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] Упорядочить по.... | 6unya | Microsoft Windows 7 | 6 | 19-09-2011 09:45 | |
Прочие - Упорядочить ярлыки | ferget | Программное обеспечение Windows | 20 | 07-06-2011 07:16 | |
VBS/WSH/JS - [решено] Скрипт: Упорядочить значки > Автоматически | AzazeLHAck | Скриптовые языки администрирования Windows | 3 | 24-04-2010 15:31 | |
Можно ли заменить матрицу TN с CCFL-подсветкой на матрицу AFFS с LED-подсветкой? | elmix | Ноутбуки | 1 | 16-03-2010 02:59 | |
Упорядочить значки автоматически | Vadim Boev | Автоматическая установка Windows 2000/XP/2003 | 1 | 01-01-2005 07:58 |
|