![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
P-Tigr |
![]() ![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Столкнулся с одной проблемой, 2 дня уже бьюсь... что делать - не знаю...
Если коротко, то дело вот в чем. Я написал процедуру для подсчета определителя матрицы любого порядка (методом Гаусса). И там над матрицей выполняются различные преобразования (складывания строк и т.д.). Причем - внимание - по условию задания матрица должна быть обязательно динамической! Процедура работает нормально, определитель находит, НО в то же время изменяет исходную матрицу, а этого нельзя допустить!! Происходит это, как мне кажется, из-за того, что такие матрицы - ссылки на память, поэтому передать ее в процедуру строго по значению нельзя... Замучился я с этими динамическими структурами... ![]() Please, умные люди, help me! |
![]() ![]() |
P-Tigr |
![]()
Сообщение
#2
|
Группа: Пользователи Сообщений: 9 Пол: Мужской Репутация: ![]() ![]() ![]() |
Извините пожалуйста, еще 1 вопрос, помогите разобраться!
Почему при вводе некоторых данных, например 1 1 1 1 1 1 1 1 1 в блоке функции нахождения определителя: for j:=0 to high(AC)-1 doв строке mnoj:=mn1/mn2; появляется ошибка, связанная с плавающей запятой: "Invalid floating point operation" или "Floating divizion by zero". ПОЧЕМУ? P.S.1. Ошибка появляется и при вводе разных чисел, но правда не всегда - очень странно... P.S.2. Я присоединил к письму exe-файл в rar-архиве - чтоб удобней было тестировать. Прикрепленные файлы ![]() |
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
Цитата(P-Tigr @ 16.03.05 5:23) появляется ошибка, связанная с плавающей запятой: Это не связано с вводимыми данными... Только с тем, что у тебя в отмеченных строках просто напросто происходит выход за границы массива (не забывай, что динамические массивы индексируются с 0 до N-1), и кто знает, какие значения там хранятся... "Invalid floating point operation" или "Floating divizion by zero". ПОЧЕМУ? for j:=0 to high(AC)-1 doЯ совсем забыл написать, что я менял границы индексов когда проверял... Привычка... P.S. Смотри и выше в тексте функции. Там тоже есть выход за пределы массива... |
![]() ![]() |
![]() |
Текстовая версия | 27.07.2025 11:23 |