![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Большой массив
n-neo © (2012-02-27 16:26:00)Здравствуйте. Мне нужно создать массив длиною 10 000 000. Тип Single. SetLength(a, 10000000) создает массив длиной 131072. Что делать?
Забаненный (2012-02-28 01:20:00) [1]Неа. Объяви ее в private и ничего не бойся. Но можно и без нее обойтись. i и j вполне информативны.
CRLF (2012-02-27 23:44:00) [2]
> это в отдельную процедуру, иначе смотреть страшно
А на глобальную переменную не страшно смотреть?
Забаненный (2012-02-27 23:38:00) [3]разумеется, процедура вызывается трижды, четырежды.. скока там надо. ошибся чуть :)
Забаненный (2012-02-27 23:36:00) [4]это в отдельную процедуру, иначе смотреть страшно
begin
Massive[k]:=XX[i,j+1]/2;
Massive[k+1]:=YY[i,j+1]/2;
Massive[k+2]:=ZZ[i,j+1]/2;
end;
тогда основной цикл
for j := 0 to m - 2 do
for i := 0 to n - 2 do
begin
процедура
inc(k, 3);
end;
и можно даже еще сократить:
begin
Massive[k]:=XX[i,j+1]/2;
Massive[k+1]:=YY[i,j+1]/2;
Massive[k+2]:=ZZ[i,j+1]/2;
inc(k, 3);
end;
for j := 0 to m - 2 do
for i := 0 to n - 2 do процедура
n-neo (2012-02-27 16:50:00) [5]извините, конечно же я ошибся...
RWolf (2012-02-27 16:49:00) [6]и да, k элементарно выбегает за границу массива.
это не говоря о том, что не хватает одного inc(k).
RWolf (2012-02-27 16:47:00) [7]
> SetLength(a, 10000000) создает массив длиной 131072.
«не верю!» ©
n-neo (2012-02-27 16:34:00) [8]
n:=1000;
m:=1000;
SetLength(Massive, 2*n*m*3);
k:=0;
for j := 0 to m - 2 do
for i := 0 to n - 2 do
begin
Massive[k]:=XX[i,j+1]/2;
inc(k);
Massive[k]:=YY[i,j+1]/2;
inc(k);
Massive[k]:=ZZ[i,j+1]/2;
inc(k);
Massive[k]:=XX[i,j]/2;
inc(k);
Massive[k]:=YY[i,j]/2;
inc(k);
Massive[k]:=ZZ[i,j]/2;
inc(k);
Massive[k]:=XX[i+1,j]/2;
inc(k);
Massive[k]:=YY[i+1,j]/2;
inc(k);
Massive[k]:=ZZ[i+1,j]/2;
inc(k);
Massive[k]:=XX[i+1,j+1]/2;
inc(k);
Massive[k]:=YY[i+1,j+1]/2;
inc(k);
Massive[k]:=ZZ[i+1,j+1]/2;
end;
В процессе выполнения вылетает Access Violation..
Anatoly Podgoretsky (2012-02-27 16:28:00) [9]Показать код, а не огрызки