Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.85/13: Рейтинг темы: голосов - 13, средняя оценка - 4.85
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285

Программа для кодирования сообщений по методу Хаффмана. Invalid floating point operation

31.03.2014, 00:23. Показов 2774. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Короче прикол в следующем. Делаю прогу для кодирования сообщений по методу Хаффмана и параллельно тестю. Так вот, сделал процедуру для построения бинарного дерева, но каждый раз, на одной и той же итерации, в том же самом месте выдаёт одну и ту же ошибку. Там нету ни деления на ноль, ни корня из отрицательного числа, ни ещё каких-то функций, которые могут вызвать ошибку. Там просто обычное сравнение
Pascal
1
if (Min<MB[Len_Alph]^.Sum) and (Len_Alph>=0) then
Разделял это дело на 2 части, проблема именно в
Pascal
1
Min<MB[Len_Alph]^.Sum
Вводил ещё одну переменную, которой присваивал MB[Len_Alph]^.Sum. Всё равно выбивает именно на сравнении. Читал что это может быть связанно с переполнением стека (или что-то типа того), но там не так уж много дин. переменных создано, чтобы такое могло быть. Ну, или просто я чего-то не понимаю.
Если надо, то могу выложить код, но не хотелось бы этого делать, ибо он слишком уж сырой и кривой (стыдно мне короче).
В общем, надеюсь что кто-то чем-то поможет, ибо уже все Интернеты перерыл, но решения так и не нашёл.

Добавлено через 36 минут
Что, никто даже не посмотрит?(
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
31.03.2014, 00:23
Ответы с готовыми решениями:

Invalid floating point operation
Почему на одном компе работает нормально (win7 tp и fpc tp mode), а на другом (winXp tp) вылетает с ошибкой код: uses crt; type func =...

Invalid floating point operation
возникает вот такая ошибка Invalid floating point operation var i,j,k,num:integer; m,l:real; begin for k:=0 to 2 do begin ...

invalid floating point operation
помогите решить проблему. вылезает ошибка invalid floating point operation unit Unit1; interface uses Windows, Messages,...

32
Наблюдатель
 Аватар для Alex Dark
457 / 192 / 33
Регистрация: 01.05.2012
Сообщений: 1,028
31.03.2014, 00:30
Смотри значение в Min и в MB[Len_Alph]^.Sum

Другого сказать трудно. Отладчик тебе в помощь

207 Invalid floating point operation (Недопустимая операция с плавающей запятой) .
Возможные причины сообщения:
• аргумент функций TRUNC или ROUND не может быть преобразован в целое число, находящееся внутри диапазона типа LONGINT (от -2147483648 до +2147483647);
• отрицательный аргумент функции SQRT (извлечение квадратного корня);
• аргумент функции LN (логарифм) равен нулю или имеет отрицательное значение;
• произошло переполнение стека сопроцессора.
0
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 00:37  [ТС]
Цитата Сообщение от Alex Dark Посмотреть сообщение
Смотри значение в Min и в MB[Len_Alph]^.Sum
Смотрел. Значения нормальные. 3 знака после запятой.

Цитата Сообщение от Alex Dark Посмотреть сообщение
207 Invalid floating point operation (Недопустимая операция с плавающей запятой) .
Возможные причины сообщения:
• аргумент функций TRUNC или ROUND не может быть преобразован в целое число, находящееся внутри диапазона типа LONGINT (от -2147483648 до +2147483647);
• отрицательный аргумент функции SQRT (извлечение квадратного корня);
• аргумент функции LN (логарифм) равен нулю или имеет отрицательное значение;
• произошло переполнение стека сопроцессора.
Это уже видел. Ничего из этого не подходит. Разве что последнее (я не знаю что это, поэтому не откидаю). Остальное не подходит. Отладчиком уже вдоль и в поперек перелазил всё. Не знаю я в чём там дело. Сюда написал уже в отчаянии. =\
0
angstrom
31.03.2014, 00:43
Поменяйте местами проверки
Delphi
1
if (Len_Alph >= 0) and (Min < MB[Len_Alph]^.Sum) then
иначе, если Len_Alph < 0, то в вашем варианте будет ошибка.
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 00:45  [ТС]
Цитата Сообщение от angstrom Посмотреть сообщение
Поменяйте местами проверки
Я выносил их отдельно, т.е. делал 2 if'а, как раз чтобы проверить, связаны ли они как-то. Ошибка именно в том сравнении что я указал.
0
angstrom
31.03.2014, 01:16
Если нет ошибок в других частях кода, то без разницы делите на два условия или нет, но
Delphi
1
if (Len_Alph >= 0)
должно быть первой проверкой.
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 01:24  [ТС]
angstrom, можно ли узнать, почему? О_о

Добавлено через 5 минут
angstrom, только что сделал то, что ты написал. Результат тот же, в том же месте.
0
angstrom
31.03.2014, 01:34
1. Потому, что если Len_Alph меньше 0 вторая проверка уже не пройдёт, иначе сначала сравнивается Min и при неверном условии может вызвать крах, не дойдя до второй проверки, а потом уже меньше ли 0.
2. Ищи ошибку дальше в коде.
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 01:39  [ТС]
angstrom, так дело в том, что я брал значение с MB[Len_Alph]^.Sum в другую переменную и оно было подходящим. И значение Len_Alph = 2 (проверял при пошаговом прохождении). Т.е. дело явно не в этом. Да и при чём тут "Invalid floating point operation" тогда было бы?
0
angstrom
31.03.2014, 01:53
Вот и смотри в коде где есть операции с плавающей запятой.
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 02:23  [ТС]
angstrom, но... ведь... я туеву хучу раз прошёл там всё пошагово. Наблюдая за каждой переменной до этого момента. Нету там ничего такого

Добавлено через 26 минут
Ну же, народ, активнее . Реально запарился уже и не знаю что с этим делать .
0
angstrom
31.03.2014, 02:30
Чудес не бывает.
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 02:34  [ТС]
angstrom, это всё потому что у тебя бубна нет. И у меня нет. А был бы у меня бубен - всё заработало бы . Не знаю, то ли я такой тупой, то ли там действительно магия какая-то.
0
angstrom
31.03.2014, 02:34

Не по теме:

Ну да, я не шаман.

13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 02:38  [ТС]
angstrom, тут звучала ещё такая хрень как переполнение стека сопроцессора. Что это за хрень и может ли это действительно быть причиной?
0
angstrom
31.03.2014, 02:50
Если присутствует рекурсия.
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 02:54  [ТС]
angstrom, короче, кину проект. Хоть и стыдно за такой исходник) Говорю сразу, это именно для того чтобы написать и затестить модуль. Рекурсия есть, но до неё даже и не доходит.
Пы.Сы. Если есть какие-то замечания по коду - буду рад критике (самосовершенствование и всё такое).
Пы.Пы.Сы. Да, я знаю что переменную root я не инициализировал. Ту процедуру я написал уже чтобы не тратить время зря.
Вложения
Тип файла: rar Хаффман.rar (11.8 Кб, 17 просмотров)
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,608
31.03.2014, 02:56
Цитата Сообщение от Мизантроп_Лол Посмотреть сообщение
Ну же, народ, активнее
Начинай. Приводи свой полный код, а не свои домыслы.
Опоздал, блин.
0
13 / 13 / 2
Регистрация: 26.02.2013
Сообщений: 285
31.03.2014, 02:57  [ТС]
northener, уже привёл код. Домыслов нету)
Не думай, я не халявщик, который нифига не шарит и хочет чтобы за него сделали. Я реально долго над этой проблемой думал и искал в Интернетах, в чём может быть причина)
0
angstrom
31.03.2014, 03:03
Этот код ничего не даёт. Достаточно случаев, когда ошибка происходит раньше, а вываливается на других строках, так что нужен полный код, иначе можно гадать до бесконечности.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.03.2014, 03:03
Помогаю со студенческими работами здесь

Invalid floating point operation.
При попытке вывести график функции выдает ошибку. Что может быть не так? unit Unit1; interface uses Windows, Messages,...

invalid floating point operation
Ребят, помогите пожалуйста, пишу программу для построения графика, выскакивает ошибка invalid floating point operation в этой строке: p:=...

Invalid floating point operation.
function Df1(x:real):real; begin Df1:=-2+(0.4*x); end; function Df2(x:real):real; begin Df2:=-2.4+(0.4*x); end; procedure...

Invalid floating point operation
помогите люди добрые. программа строит график, но постоянно при построении показывает ошибку Invalid floating point operation. Весь...

Invalid floating point operation
Здравствуйте, подскажите, пожалуйста, почему возникает ошибка Invalid floating point operation. Это процедура подсчета среднего значения...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru