Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.09.2011, 00:05   #1
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию Проблема с типом данных

Доброго времени суток.Возник вопрос.
Необходимо реализовать алгоритм Литтла с матрицей
смежности.Что касается самого алгоритма всё понятно.Но есть мелкая неприятность может кто то
знает как её можно устранить.В матрице изначально по главной диагонали должна стоять бесконечность или
прочерки в общем символ какой то .А матрица числового типа.Что можно и как вклинить чтобы
не было конфликта типов?Пишу в delhi
Заранее благодарен.
Nicko_mt вне форума Ответить с цитированием
Старый 17.09.2011, 00:13   #2
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

прочерки - это нули?
тогда напиши код, чтоб все элементы по диагонали менялись с прочерков на числа.
если у Вас массив имеет имя a[i,j] и размерность NxN, то как-то так:
Код:
for i:=1 to N do a[i,i]:=0;//если нули не устривают, меняйте сами на другие числа
массив у вас такого типа:
var a[1..N ,j..N] of Integer? или Real? ну, вобщем, числовой тип имеет или просто символьный Char?
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 17.09.2011 в 00:15.
NetSpace вне форума Ответить с цитированием
Старый 17.09.2011, 00:20   #3
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Шаг 1. В каждой из строк матрицы находим значение минимального элемента-та и вычитаем его из всех элементов этой строки.
Шаг 2. В каждом столбце получившейся матрицы находим значение минимального эл-та и вычитаем его из всех элементов этого столбца.
Шаг 3. Далее в полученной матрице необходимо для каждого нулевого эл-та X[i,j] найти сумму минимального эл-та в i-ой строке и j-ом столбце.
Шаг 4. Среди найденных сумм найти наибольшую и запомнить пару индексов [i,j] соответствующего ей нуля. Эта пара и будет одним из элементов искомого маршрута (она отражает перемещение из города с номером i в город с номером j ).
Шаг 5. Вычеркнуть i-ую строку и j-ый столбец матрицы (с сохранением индексации), а на месте эл-та X[j,i] поставить "прочерк".
Шаг 6. Повторять все действия начиная с шага 1 до тех пор, пока все эл-ты матрицы не окажутся вычеркнутыми.

Я сначала тоже подумал про нули, но в самом алгоритме мы с нулями оперируем поэтому путаница выйдет. Вообще то там не прочерки там знаки бесконечности так как матрица смежности.http://uchimatchast.ru/teory/litl_primer2.php Вот в любом случае там по диагонали какое нить опознавание к числам не относящееся. Так что наверное придётся делать как то с 2-мя матрицами одной строковой другой числовой хотел конечно избежать этого но наверное не выйдет)).
А тип матрицы у меня integer
Nicko_mt вне форума Ответить с цитированием
Старый 17.09.2011, 00:23   #4
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

а бесконечность-то вы как в матрицу запишете??? я числа умею только...ну, тода запишите единички.
а, если прочерк означает, что эту строку вы читать не должны, тогда ставьте такое число, чтоб читалось и чтоб не было похоже на другие. скажем, со знаком -. ну -5 или -1. это если при условии, чтоу вас все остальные элементы заведомо положительные.
и проверять удобно будет:
Код:
if (a[i,j]<0)then //не читаем
if(0<=a[i,l])then //выполняем расчёты
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.

Последний раз редактировалось NetSpace; 17.09.2011 в 00:26.
NetSpace вне форума Ответить с цитированием
Старый 17.09.2011, 00:27   #5
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Да единички тоже запутают прогу. Ладно что нибудь придумаем.Спасибо за то что отозвались)).
Nicko_mt вне форума Ответить с цитированием
Старый 17.09.2011, 00:30   #6
NetSpace
Участник клуба
 
Аватар для NetSpace
 
Регистрация: 03.06.2009
Сообщений: 1,814
По умолчанию

ну тогда меняйте тип INTEGER не REAL и вместо прочерков записывайте числа с дробной частью, вроде как 1,5. и проверяйте их на целостность. так ещё можно промаркировать
Программирование - это единственный способ заставить компьютер делать то, что тебе хочется, а не то, что приходится.
NetSpace вне форума Ответить с цитированием
Старый 17.09.2011, 00:42   #7
Nicko_mt
Пользователь
 
Аватар для Nicko_mt
 
Регистрация: 14.04.2011
Сообщений: 31
По умолчанию

Впринципе можно делать просчёт по всем элементам кроме диагональных.
Nicko_mt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с типом данных BMWSauber Общие вопросы .NET 1 12.10.2010 13:42
Проблема с типом данных при записи на сервер Swatch Microsoft Office Access 1 09.04.2010 19:03
проблема с типом PBoolean menoob Общие вопросы C/C++ 1 09.07.2009 00:52
Createprocess проблема с типом строк Ky3Heu, Общие вопросы Delphi 2 08.04.2009 23:15
проблема с типом? OLEG'arh Помощь студентам 4 03.03.2009 16:02