![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | 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] в этом собственно и крылась проблема. Всем спасибо за советы! ![]() |