Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Теоретические вопросы _ Передача матрицы процедуре

Автор: gfx 21.10.2006 19:43

Каким образом можно передать матрицу NxM функции в качестве аргумента?
если с одномерными массивами всё более-менее понятно, то как быть в этом случае?

Автор: мисс_граффити 21.10.2006 20:05

как объявлена матрица?
и как ты передаешь одномерный массив?

Автор: volvo 21.10.2006 20:35

Цитата
как объявлена матрица?
Совершенно неважно... Как бы ты не объявила матрицы, при передаче чарез Бестиповый параметр (Var-параметр), и, естественно, зная в процедуре, как именно объявлена матрица, всегда можно с ней правильно работать...

Автор: мисс_граффити 21.10.2006 20:38

неправильно выразилась smile.gif
скажем так: создан ли тип?
или просто написано "имя переменной: array[1..n] of тип"?

Автор: gfx 21.10.2006 23:03

Цитата(мисс_граффити @ 21.10.2006 16:38) *

неправильно выразилась smile.gif
скажем так: создан ли тип?
или просто написано "имя переменной: array[1..n] of тип"?

с
type mn = array [1..n,1..m] of integer
всё так же понятно.
но можно ли обойтись без создания типа? smile.gif

Автор: volvo 21.10.2006 23:53

Цитата
можно ли обойтись без создания типа?
Можно... Либо передавай как тебе написали выше матрицу через Var параметр (вообще без типа)
procedure test(var mx; const m, n: integer);
begin
...
end;
, либо как открытый массив:
procedure test(var mx: array of T; const m, n: integer);
begin
...
end;

и работай с одномерным массивом, как с матрицей (вычисляя линейный адрес элемента через известные тебе M и N)...

(код приводить не буду, ибо раздел чисто теоретический)