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

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

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

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

Сообщение serge#LVL » 14.04.2017 20:23:01

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

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

Код: Выделить всё
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... не помогло
serge#LVL
новенький
 
Сообщения: 13
Зарегистрирован: 19.08.2016 13:17:36

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

Сообщение vitaly_l » 14.04.2017 21:24:41

Посмотрите что именно у Вас получается в tny после jt0:=tny-1; и после trunk
при tny равному 0 Вы получаете индекс равный "-1" и т.д.
Аватара пользователя
vitaly_l
долгожитель
 
Сообщения: 3333
Зарегистрирован: 31.01.2012 16:41:41

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

Сообщение serge#LVL » 14.04.2017 22:26:01

vitaly_l, спасибо!

Я разобрался. Проблема была совсем не в trunc. И условие работает нормально. Индекс массива увеличивался ниже этого кода, а я в процессе отладки это сразу не увидел :oops: . Прицепился к условию и не смог с мертвой точки сдвинуться.
serge#LVL
новенький
 
Сообщения: 13
Зарегистрирован: 19.08.2016 13:17:36


Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 9

Рейтинг@Mail.ru