Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2013.03.22;
Скачать: CL | DM;

Вниз

Большой массив   Найти похожие ветки 

 
n-neo   (2012-02-27 16:26) [0]

Здравствуйте. Мне нужно создать массив длиною 10 000 000. Тип Single. SetLength(a, 10000000) создает массив длиной 131072. Что делать?


 
Anatoly Podgoretsky ©   (2012-02-27 16:28) [1]

Показать код, а не огрызки


 
n-neo   (2012-02-27 16:34) [2]


 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..


 
RWolf ©   (2012-02-27 16:47) [3]


> SetLength(a, 10000000) создает массив длиной 131072.

«не верю!» ©


 
RWolf ©   (2012-02-27 16:49) [4]

и да, k элементарно выбегает за границу массива.
это не говоря о том, что не хватает одного inc(k).


 
n-neo   (2012-02-27 16:50) [5]

извините, конечно же я ошибся...


 
Забаненный   (2012-02-27 23:36) [6]

это в отдельную процедуру, иначе смотреть страшно
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 процедура
   


 
Забаненный   (2012-02-27 23:38) [7]

разумеется, процедура вызывается трижды, четырежды.. скока там надо. ошибся чуть :)


 
CRLF   (2012-02-27 23:44) [8]


> это в отдельную процедуру, иначе смотреть страшно
А на глобальную переменную не страшно смотреть?


 
Забаненный   (2012-02-28 01:20) [9]

Неа. Объяви ее в private и ничего не бойся. Но можно и без нее обойтись. i и j вполне информативны.



Страницы: 1 вся ветка

Текущий архив: 2013.03.22;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.071 c
15-1351629002
Юрий
2012-10-31 00:30
2013.03.22
С днем рождения ! 31 октября 2012 среда


15-1353253627
alexdn
2012-11-18 19:47
2013.03.22
Совершенно дурацкий вопрос


15-1350484358
xayam
2012-10-17 18:32
2013.03.22
Наиболее эффективный алгоритм сжатия


15-1348831991
dmi3
2012-09-28 15:33
2013.03.22
for..in..do


2-1342699186
vasa777
2012-07-19 15:59
2013.03.22
правое меню