Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Минимум в стрингриде


Автор: Самозванка 5.9.2006, 13:32
Есть определенный стринггрид...
Находим в нем минимум...(сделано).
Потом, где находится минимум столбец (или строку) обнуляем(сделано).
Далее ищим минимум везде в стрингриде кроме этого столбца...( тоже сделала)
А потом надо сделать чтобы искало везде кроме этого столбца и еще одного столбца или даже строчки, ну тоесть исключающие строки и столбцы нельзя учитывать...а они все накапливаются и накапливаются...
Как это реализовать???
Если не правильно как то сформулировала, уточню...

Автор: Partizan 5.9.2006, 14:37
ну первое что приходит в голову. воспользоваться вспомогательными переменными....например записывать индексы проверенных строк и столбцов....

Автор: Самозванка 5.9.2006, 14:55
так а если я незнаю сколько их конкретно будет?
их пользователь задает

Автор: Partizan 5.9.2006, 15:01
ну хорошо...другой вариант...алгоритм сдледующий:

пусть есть матрица 4х4:
хххх
хххх
хххх
хххх

проходим от 0 до 3 строки и столбцы..нашли минимум...допустим он в 3 строке...обнуляем.....

хххх
хххх
0000
хххх

и вот теперь 3 строку смещаем в конец и в итоге получаем матрицу 3х4....
хххх
хххх
хххх
0000

кароче суть состоит в сдвиге обнулённых строк(столбцов) в конец матрицы

Автор: Самозванка 5.9.2006, 15:09
неа... просто мне надо чтобы строки и столбцы остались на месте, я там значения еще в опреденные клетки записываю...
Вообщем я пишу программу решение Транспортной задачи( в данный момент нахождение опорного плана методом минимального элемента)

Автор: Partizan 5.9.2006, 15:15
хз...я б воспользовался вспомогательным динамическим массивом...

Автор: Самозванка 5.9.2006, 15:30
Просто, вот можно не обнуляя строки, просто исключать их из рассмотрения...(Delfy такое позволяет...)
И зачем массив еще один если стринг грид сам по себе массив, иль нет? У меня еще небольшой просто опыт программирования. но большое стремление.
Объясню задачу:
Алгоритм метода минимального элемента состоит в следующем.
     Просматривается вся матрица тарифов перевозок,  и  из  нее  выбирается
 позиция с наименьшим значением тарифа  C,  затем  просматриваются  значения
 наличия запасов на складе  A и потребности у потребителя  B, затем в данную
 клетку записывается величина D=MIN(A,B). Из запасов соответствующего склада
 и потребностей магазина  вычитается величина D  .  Если  запас   товара  на
 складе исчерпан, то эта строка  исключается  из  дальнейшего  рассмотрения.
 Если потребность  магазина  в  товаре  удовлетворена  полностью,  то   этот
 столбец исключается из дальнейшего рассмотрения. Может быть случай ,  когда
 одновременно  исключаются  и  строка  и  столбец,  этот  случай  называется
 вырожденным. В дальнейшем весь процесс повторяется  до тех пор  ,  пока  не
 будет исчерпан весь запас товаров  на  складах  и  не  будет  удовлетворена
 потребность всех магазинов. По  полученной  матрице  перевозок  вычисляется
 целевая функция задачи Z.


Автор: Syrex 6.9.2006, 14:18
Храни инфу о выведенных строках и столбцах в матрице - a[i][j]/ И при проверке каждый раз проверяй на принадлежность строки: выведена или нет

Автор: Romikgy 6.9.2006, 15:26
имхо проще в условии добавить проверку на ноль, т.е. 
if (a[][]!=0)
а далее все свои проверки

Автор: Syrex 6.9.2006, 17:35
ну можно и так!
тогда уж так if(!a[][])

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)