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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 25.04.2011, 21:04   #1
bayker
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 18
По умолчанию invalid floating point operator

нанисал программу решения задачи коммивояжера.
алгоритм рабочий.
на определенной стадии выполнения выскакивает ошибка invalid floating point operator

подозреваю что дело в делении, либо в логарифме.

подскажите пожалуйста кто что может.

проект приложил.
Вложения
Тип файла: rar Архив WinRAR.rar (190.7 Кб, 6 просмотров)
bayker вне форума Ответить с цитированием
Старый 25.04.2011, 22:24   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Деление на ноль:
Код:
   begm[i]:=c;
   endm[i]:=c+ves[i]/sm;
   c:=endm[i];
Прик вне форума Ответить с цитированием
Старый 25.04.2011, 22:53   #3
bayker
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 18
По умолчанию

я тоже так подумал) но вот откуда там нулю взятся, когда есть только умножение и сложение положительных чисел)
bayker вне форума Ответить с цитированием
Старый 25.04.2011, 23:03   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Вот отсюда:
Код:
  sm:=0;
  repeat
    sm:=sm+ves[i];
    inc(i);
    inc(n1);
  until ves[i]<0;
А если ves = (0,0,0,0,-1), то понятно, что sm в этом случае равен нулю.

И надо заменить тип Real на тип Extended. Везде.
Прик вне форума Ответить с цитированием
Старый 25.04.2011, 23:09   #5
bayker
Пользователь
 
Регистрация: 27.05.2010
Сообщений: 18
По умолчанию

real заменил, не помогло.

а откуда бурется нули в массиве понять не могу.

for i:=1 to n do matrr[i,i]:=0;
for i:=2 to n do
for j:=1 to (i-1) do
begin
MatrR[i,j]:=Random(20);
MatrR[j,i]:=matrr[i,j]
end;

исправил на

for i:=1 to n do matrr[i,i]:=0;
for i:=2 to n do
for j:=1 to (i-1) do
begin
MatrR[i,j]:=1+Random(20);
MatrR[j,i]:=matrr[i,j]
end;

а нули все равно откуда-то лезут
bayker вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Invalid floating point operation на паскале maziLa Помощь студентам 3 26.05.2010 19:37
invalid floating point operation Mikhail91 Общие вопросы C/C++ 5 24.03.2010 00:05
Ошибка: invalid floating point operation Willow Помощь студентам 3 24.01.2010 18:42
invalid floating point operation mosq Общие вопросы Delphi 7 01.11.2009 13:28
Invalid floating point operation Skytis Помощь студентам 3 07.05.2008 12:16