|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Обнуление первого формального параметра в функции
Собтвенно есть данный код:
Код:
function fint (x , y: array of real; x0:real; kol:integer ):real; var i:integer; begin for i:= 1 to (kol - 1) do begin if ( x0 >= x[i]) and (x0<=x[i+1] ) then begin fint:= y[i] + ( x0 - x[i] ) * ( y[i+1] - y[i] ) / ( x [ i + 1 ] - x [ i ] ); exit; end; end; //of for if ( x0>x[kol] ) then fint:= y[kol] else fint:= y[1] end; Вся проблемма заключается в том, что при переходе к Код:
for i:= 1 to (kol - 1) do Проводил отладку по шагам, после begin'a массив из 10 непустых значений превращается в массив из одного элемета со значение 0.. . С чем это может быть связано? |
#2
|
|||
|
|||
Не могёт такого быть. Смотри внимательно что передаётся в функцию (в месте вызова).
Да, возможно придется описать параметры-массивы как Array Of Const. |
#3
|
||||
|
||||
Хотел написать сам, но заглянул в справку и понял что лаконичней у меня не получится. Читай и думай:
Цитата:
Некоторые программисты настолько ленивы, что сразу пишут рабочий код. Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты. |
#4
|
|||
|
|||
Мда, я в справку не глядел.
С другой стороны почему обнуляется все равно не понятно. То, что там может возникнуть выход за границу массива - это да (надо пользоваться функциями Low() & High()). А вот обнуления быть все-равно не должно. Т.е. в приведенном коде нарушено только одно правило (считает, что массив начинается с 1, а не с 0, т.е. возможен выход за границу массива), но все должно работать. Все-таки, наверное, что-то не то передается в функцию. |
#5
|
|||
|
|||
Я думаю, что тебе в параметрах функции вместо x , y: array of real; надо объявлять x , y: Tarray_of_real где Tarray_of_real это новый тип: Tarray_of_real = array of real.
|
#6
|
|||
|
|||
В функциию все передавалось как надо, глюки начались после перехода интерпретатора за строчку с begin
Почитал кусок хелпа. Проблемма решилась тем что все массивы в програме объеявленны как начинающиеся с 1 позиции. [1...n] в этом собственно и крылась проблема. Всем спасибо за советы! |