Показать сообщение отдельно
  #6  
Старый 10.03.2011, 07:18
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

Можно так:
Код:
var
  i:integer;
  a:array of double; //real
begin
  setlength(a, 10001);
  for i:=0 to 10000 do a[i]:=(i/100);
end;
Но этот алгоритм довольно медленный из-за деления (хотя для 10000 операций, на глаз это не заметно), но можно и быстрее:
Код:
var
  x:double;
  i:integer;
  a:array of double; //real
begin
  setlength(a, 10001);
  i:=0;
  x:=0;
  while i < 10001 do
    begin
    a[i]:=Real(x);
    inc(i);
    x:=x+0.01;
    end;
end;

либо

var
  i:integer;
  x:double;
  a:array of double; //real
begin
  setlength(a, 10001);
  x:=0;
  for i:=0 to 10000 do
    begin
    a[i]:=x;
    x:=x+0.01;
    end;
end;
Этот код, работает в сотни раз быстрее, но! почему-то (соответственно вопрос профессионалам) увеличение сбивается со временем на бесконечно малые величины, результат исполнения:
Код:
  ..
  2,27
  2,28
  2,29
  2,29999999999999
  2,30999999999999
  2,31999999999999
  ..
  2,75999999999999
  2,76999999999998
  2,77999999999998
  ..
  3,22999999999998
  3,23999999999997
  ..
  ..
  99,9900000000142
  100,000000000014
Того, кто ответит мне на этот вопрос, одарю малым призом
Ответить с цитированием