Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.054 c
15-1336226589
Vik
2012-05-05 18:03
2013.03.22
У меня маленький вопрос.


2-1335519491
leklerk
2012-04-27 13:38
2013.03.22
Как получить доступ к текущей записи в ADODataSet?


2-1330094823
Сергей
2012-02-24 18:47
2013.03.22
Как отменить сообщения компилятора?


15-1345572518
Dennis I. Komarov
2012-08-21 22:08
2013.03.22
БИК update online


15-1332875974
Сергей_С
2012-03-27 23:19
2013.03.22
Проблема в скайпе с отображением видео





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский