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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2011, 21:01   #1
Рик
Пользователь
 
Регистрация: 07.02.2011
Сообщений: 29
Радость Функция возвращает массив

Здраствуйте. Хотел написать функцию, возврщающую целочисленный массив (арифметическая прогрессия). Пробывал так:

type SomeArray = array of integer;// объявляем указатель на динамический массив

function GetArr(Arr:SomeArray; arrLimit,fstElement,arrStep:integer ):Somearray;
var i: Integer;
begin
SetLength(Arr,arrLimit);//Устанавливаю количество элементов (длинну) массива
Arr[0]:=fstElement; //устанавливаю значение первого элемента массива (нумерация начин. с нуля)
For i:=0 To arrLimit Do
arr[i]:=fstElement + ((Arr[i] -1) * arrStep);
GetArr=Arr[0.. arrLimit];// пытаюсь тупо присвоить массив фунции
end;
Но Делфи ругается что не хватает параметров. Как быть?
Рик вне форума Ответить с цитированием
Старый 19.03.2011, 22:16   #2
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Код:
function GetArr(arrLimit,fstElement,arrStep:integer ):Somearray;
var i: Integer;
begin
  SetLength(Result, arrLimit);
  Result[0] := fstElement;
  For i:=0 To High(Result) Do //High - функция, "знающая" сколько элементов в дин. массиве. Т.е. arrLimit - 1.
    Result[i] := fstElement + ((Result[i] -1) * arrStep);
end;
Прик вне форума Ответить с цитированием
Старый 19.03.2011, 22:34   #3
chertovich
Форумчанин
 
Аватар для chertovich
 
Регистрация: 26.07.2009
Сообщений: 489
По умолчанию

>> High - функция, "знающая" сколько элементов
Функция High не определяет количество элементов, а максимальное значение. Количество определяет Length
Если в глубине души вы программист, то, следуя своим наклонностям, вы захотите написать кусок кода.
chertovich вне форума Ответить с цитированием
Старый 19.03.2011, 22:40   #4
Прик
Форумчанин
 
Регистрация: 08.09.2010
Сообщений: 880
По умолчанию

Цитата:
Сообщение от chertovich Посмотреть сообщение
Функция High не определяет количество элементов, а максимальное значение. Количество определяет Length
Ну, извините, не так выразился. Само собой, поправка дельная.
Прик вне форума Ответить с цитированием
Старый 19.03.2011, 23:16   #5
Рик
Пользователь
 
Регистрация: 07.02.2011
Сообщений: 29
По умолчанию

Спасибо Прик, работает.
Рик вне форума Ответить с цитированием
Старый 22.03.2011, 09:07   #6
Рик
Пользователь
 
Регистрация: 07.02.2011
Сообщений: 29
По умолчанию

маленькая поправочка: вместо Result[i] := fstElement + ((Result[i] -1) * arrStep) следует писать : Result[i] := fstElement + (((Result[i] +1)-1 )* arrStep);
Рик вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Функция Pos возвращает 0 gufon Общие вопросы Delphi 16 14.03.2011 22:10
Функция которая возвращает динамический массив gagarin0 Помощь студентам 5 19.01.2011 13:48
функция не возвращает результат=( Chica Bond Общие вопросы C/C++ 14 03.12.2010 18:47
функция не возвращает нужный мне массив LOST94 Общие вопросы C/C++ 0 01.07.2010 15:33
Функция не возвращает значения 2.0 Winlook PHP 1 10.05.2010 00:58