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

Вниз

Массивы   Найти похожие ветки 

 
SergeyM   (2003-09-19 15:28) [0]

Здравствуйте все.
Подскажите плз, как мне получить динамический двумерный массив.
Тотже но одномерный, определяю в нем кол-во элементов через SelLength(a,d-1), а как быть в многомерном?


 
Palladin ©   (2003-09-19 15:30) [1]

var
a:array of array of integer;

setlength(a,2);
setlength(a[0],3);
setlength(a[1],2);


 
SergeyM   (2003-09-19 15:32) [2]

Palladin Привет, если не трудно опиши последние две строчки.


 
SergeyM   (2003-09-19 15:46) [3]

Плиз поясните мне что написано в двух последних строках у Palladin"a


 
Nikolay M. ©   (2003-09-19 15:49) [4]

Указание размерности двумерного массива: 3Х2.


 
Владислав ©   (2003-09-19 15:52) [5]

setlength(a[0],3);
setlength(a[1],2);

Вот это и написано. Установка размера массивов. Ну, типа, массивы то многомерные. А вообще, пример в хелпе же есть. Он же, в общем то, достаточно понятный. Типа, F1, и счастье наступает.


 
SergeyM   (2003-09-19 15:53) [6]

Значит чтобы получить многомерный массив нужно описать все три строки или достаточно двух.


 
SergeyM   (2003-09-19 15:55) [7]

Владиславу: поставил курсор на слово и получил описание одномерного массива.


 
Владислав ©   (2003-09-19 16:00) [8]

"получить многомерный массив"

Смущает фраза. Если Вы правильно выразились, а я правильно понял, то да :-)

> SergeyM (19.09.03 15:55) [7]

Ну типа поисковую думалку включить надо. Думаю, что пользование хелпом, не сложнее, чем сам паскаль.


 
SergeyM   (2003-09-19 16:03) [9]

Без базара, нашел :-)


 
Владислав ©   (2003-09-19 16:08) [10]

> SergeyM (19.09.03 16:03) [9]

Ну и чудно! Удачи! ;-)


 
SergeyM   (2003-09-19 16:16) [11]

Да вот ни че не получается блин!
Задача у меня такая нужно найти алгебраическое дополнение к исходной матрице, а там как известно нужно из 4-х мерной в 3-х мерную переводить, и делфя ошибку сразу выдает.


 
Владислав ©   (2003-09-19 16:19) [12]

> SergeyM (19.09.03 16:16) [11]

Блин, нету тут телепатов. Остальные заявления - понты дешевые :-)
Код давай. Ошибку тоже.


 
SergeyM   (2003-09-19 16:23) [13]

Может где не прав извеняйте.

function TForm1.Dop(m, n, k: integer): Integer;
var i,j,x,y:integer;
e,a: array of array of integer;
begin
x:=1;
y:=1;
SetLength(e,k-1); //это под ? я ее тыкал везде
SetLength(e[x],k-1); //тоже
SetLength(a,k);
for i:=Low(a) to High(a) do
begin
Memo2.Lines.Add("");
SetLength(a[i],k);
for j:=Low(a[i]) to High(a[i]) do
begin
if (a[i,j] = a[m,j] or a[i,n]) then //здесь после ошибки выделяет строку
begin
a[i,j]:=a[i,j];
end
else
begin
e[x,y]:=a[i,j];
Memo2.SelText:=IntToStr(e[x,y])+" ";
if y = k-1 then
begin
inc(x);
y:=1;
end
else inc(y);
end;
end;
end;
Ошибка:
"Попытка доступа в адрес такой-то в моем модуле чтение из адреса 0000000000


 
Sandman25 ©   (2003-09-19 16:32) [14]

for j:=Low(a[i]) to High(a[i]) do
begin
if (a[i,j] = a[m,j] or a[i,n]) then //здесь после ошибки выделяет строку
begin
a[i,j]:=a[i,j];
end

Странные конструкции...

Может, так:
if (a[i,j] = a[m,j]) or (a[i,n] = ?)

Это вообще непонятно зачем
a[i,j]:=a[i,j];

И нужно быть уверенным, что существует элемент a[m,j]. Массив прямоугольный? В смысле все строки имеют одинаковое число столбцов?


 
Владислав ©   (2003-09-19 16:32) [15]

Блин, код плохо форматируется, читать плохо...

> SergeyM (19.09.03 16:23) [13]

Может где не прав извеняйте.

Да брось ты...

Поставь на время отладки галку Range checking. Если проблема в массивах, поймаешь ее.


 
SergeyM   (2003-09-19 16:38) [16]

Сообщение a[i,j]:=a[i,j]; написано чтобы ниче не делал
В функцию задаются параметры m,n - это индексы исходного массива, а к - это размерность исходного массива.
Вообще без динамических массивов все работало только выдавло странной пропорции массив вот я и решил попробовать динамический , а что вышло уже говорил.


 
MBo ©   (2003-09-19 16:39) [17]

SetLength(Mat4x4,4,4);
SetLength(Mat3x3,3,3);
нумерация с нуля!


 
SergeyM   (2003-09-19 16:41) [18]

SetLength(Mat4x4,4,4) - а это чего?


 
Sandman25 ©   (2003-09-19 16:42) [19]

>Сообщение a[i,j]:=a[i,j]; написано чтобы ниче не делал

Не понял. Поставьте if not (условие) then.


 
SergeyM   (2003-09-19 16:44) [20]

Sandman25 © > точно чето я и забыл совсем.
Извените я ухожу получать знания в институт ежели че то через 4 часа поговорим.


 
Думкин ©   (2003-09-19 19:02) [21]


> [20] SergeyM (19.09.03 16:44)

Вот и получай, а не смущай народ.
"Народ, у меня рожа красная - А пить меньше пробовал? - а что помогает?"


 
Anatoly Podgoretsky ©   (2003-09-19 22:40) [22]

SetLength(Ar,Y,X)

Nikolay M. © (19.09.03 15:49) [4]
Ой как ты неправ, это объявление нерегулярного (неравномерного) массива.



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

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

Наверх




Память: 0.51 MB
Время: 0.019 c
14-4120
BOA_KAA
2003-09-12 18:34
2003.10.02
Вопрос на ixbt: я плакаль!


1-3840
zloy_dima
2003-09-19 12:29
2003.10.02
TmemoryStream


1-3833
Armageddon
2003-09-19 14:21
2003.10.02
Как запустить программу как сервис.


1-3837
lex7
2003-09-19 10:56
2003.10.02
Вызов помощи в chm-формате


7-4140
DimaS
2003-07-17 13:41
2003.10.02
Как удалить файл или весь каталог в корзину?