Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.12.2009, 23:46   #1
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию Delphi Функции

Прости меня за глупый вопрос, но не где не могу найти ответ.
Скажите можно ли функции возвращать значение массива и если можно то как оно делается.
Вот попробывал с компилировать такой пример и мне дают отказ:
Код:
Function FoactorCalculationC(delta,lambda:mas1):mas1;
var
  i:integer;
begin
  for i:=1 to 3 do
   Result[i]:=delta[i]/lambda[i];
end;
world12_tk вне форума Ответить с цитированием
Старый 26.12.2009, 23:50   #2
world12_tk
Форумчанин
 
Регистрация: 24.02.2009
Сообщений: 269
По умолчанию

и вот назрел еще вопрос. если можно в функцию возвращать значение массива, то можно ли эту функцию делать динамическую. просто у меня delta и lambda динамические массивы
world12_tk вне форума Ответить с цитированием
Старый 27.12.2009, 00:01   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
type tmas = record
 t: array of extended;
end;

Function FoactorCalculationC(delta,lambda: tmas): tmas;
var
  i:integer;
begin
  for i:=low(delta.t) to high(delta.t) do // разумеется delta,lambda равной длины иначе смысла нет или нужна проверка
   Result.t[i]:= delta.t[i]/lambda.t[i];
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
var delta, lambda, z: tmas;
i: integer;
begin
 setlength(delta.t, 3); // как пример установим
 setlength(lambda.t, 3);
 setlength(z.t, 3);

 for i:= low(delta.t) to high(delta.t) do begin
 delta.t[i]:= 3;
 lambda.t[i]:= i
 end;

 z:= FoactorCalculationC(delta, lambda);
...
смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 27.12.2009, 00:01   #4
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Да можно
Код:
Result[i] := delta[i] / lambda[i];
Вернет результат деления итых элементов двух массивов, а у Вас она должна возвращать массив!

2.
Цитата:
Код:
FoactorCalculationC(delta,lambda:mas1)
Можно попробовать объявить так
Код:
FoactorCalculationC(var delta,lambda:mas1)
Тогда можно работать со ссылками на массивы))
Получать размеры массивов можно так
Код:
LenDelta := High(delta);
LenLambda := High(lambda);
psycho-coder вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
функции в delphi -COREY- Общие вопросы Delphi 5 11.12.2009 09:02
Функции калькулятора. (Delphi) Delphi111 Помощь студентам 8 27.09.2009 14:59
График функции (delphi 7) Demav Помощь студентам 12 02.07.2009 08:43
Вычислить значение функции на Delphi 7. Miracle01 Помощь студентам 6 02.05.2009 00:35