непонятки с Trunc()

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Ответить
serge#LVL
новенький
Сообщения: 13
Зарегистрирован: 19.08.2016 12:17:36

непонятки с Trunc()

Сообщение serge#LVL »

Здравствуйте!

Помогите разобраться с проблемой.
Есть часть кода, где вычисляется индекс динамического массива, а потом осуществляется его проверка. Если индекс больше или равен размерности массива, то ему присваивается последний индекс массива.

Код: Выделить всё

jt0:=trunc((latT[0,it]-lat[j,i])/dlat);
if jt0>=tny then
jt0:=tny-1;


Проблема в том, условие не выполняется при jt0=tny. Вследствие возникает Access Vialation при обращении к несуществующему индексу массива.
Не могу понять в чем причина. Применял приведение типов к jt0 и tny и к Trunc(); и условие записывал в виде if abs(jt0-tny)<=1e-5 then... не помогло
Аватара пользователя
vitaly_l
долгожитель
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41
Контактная информация:

Сообщение vitaly_l »

Посмотрите что именно у Вас получается в tny после jt0:=tny-1; и после trunk
при tny равному 0 Вы получаете индекс равный "-1" и т.д.
serge#LVL
новенький
Сообщения: 13
Зарегистрирован: 19.08.2016 12:17:36

Сообщение serge#LVL »

vitaly_l, спасибо!

Я разобрался. Проблема была совсем не в trunc. И условие работает нормально. Индекс массива увеличивался ниже этого кода, а я в процессе отладки это сразу не увидел :oops: . Прицепился к условию и не смог с мертвой точки сдвинуться.
Ответить