Вопрос № 64301: Подскажите, пожалуста...
Есть динамический массив:
en: array of double;
я считываю цифры в этот массив:
for c_:=0 to 57 do
begin
if E.Sheets.Item[1].Cells[a_,c_]<>'искл' then
begin
setlength(en,c_);
en[c...
Вопрос № 64.301
Подскажите, пожалуста...
Есть динамический массив:
en: array of double;
я считываю цифры в этот массив:
for c_:=0 to 57 do
begin
if E.Sheets.Item[1].Cells[a_,c_]<>'искл' then
begin
setlength(en,c_);
en[c_]:=strtofloat(Trim(E.Sheets.Item[1].Cells[a_,c_]));
end;
end;
Затем мне нужно органзовать цикл расчета с использованием данных этого массива, например:
for i:=0 to n do
g:=1+en[i]
Теперь вопрос: как определить длинну массива динамического, какой в результате она получилась....т.е . в моем примере как определить n
Отвечает: Лукьяненко Алексей Валериевич
Здравствуйте, Артемова Марина!
В вашем случае
n := High(en);
а вот SetLength у Вас вызывается не совсем правильно. Если условие хоть раз не выполнится, то у Вас в массиве появятся пустые элементы - для избежани яэтого я бы посоветовал использовать такой код:
len := 0;
for
...
if
begin
Inc(I);
SetLength(en, I);
...
и тогда после окончания цикла длина массива (искомое n) = I
Отвечает: monah
Здравствуйте, Артемова Марина!
Уточню. Функция High возвращает номер последнего элемента. А LenGth количество элементов. Для динамических массивов High = Length-1 всегда.
--------- festina lente
Ответ отправил: monah (статус: Студент)
Ответ отправлен: 26.11.2006, 18:43
Отвечает: Sattar
Здравствуйте, Артемова Марина!
for i:=0 to high(en) do
g:=1+en[i];
Ответ отправил: Sattar (статус: 3-ий класс)
Ответ отправлен: 26.11.2006, 19:35
Отвечает: Писарев, Павел, Юрьевич
Здравствуйте, Артемова Марина!
Постаить счётчик количества элементов этого массива при его создании
Ответ отправил: Писарев, Павел, Юрьевич (статус: 2-ой класс)
Ответ отправлен: 26.11.2006, 21:49
Отвечает: Балашов Григорий
Здравствуйте, Артемова Марина!
В вашем случае я бы сделал так:
var en: array of double;
iCount: integer;
iCount := 0;
for c_:=0 to 57 do begin
if E.Sheets.Item[1].Cells[a_,c_]<>'искл' then begin
Inc(iCount);
setlength(en, iCount);
en[iCount - 1]:=strtofloat(Trim(E.Sheets.Item[1].Cells[a_,c_]));
end;
end;
Таким образом, в переменной iCount будет сохранено число элементов вашего массива. А вообще, это можно узнать с помощью функции length(). Например так:
...
iCount := Length(en);
...
Ответ отправил: Балашов Григорий (статус: 1-ый класс)
Ответ отправлен: 26.11.2006, 23:33