Цитата(Majar @ 20.12.2008, 23:11 ) | | Но причем здесь двумерный массив?! |
При том, что задача - работать с двумерным массивом. Или ты думаешь, что двумерный массив не подпадает под определение Цитата(Majar @ 20.12.2008, 23:11 ) | | стандартный или ранее объявленный тип переменной |
? Что именно запрещает совместно использовать двумерный массив и Absolute? Как? Думай, если бы это было так просто, вопроса бы не было...
Кстати, Absolute - это не только объявление переменной, Цитата(Majar @ 20.12.2008, 23:11 ) | | где type - стандартный или ранее объявленный тип переменной, а Seg:Ofs - соответственно сегмент и смещение, определяющие адрес памяти, по которому будет размещена переменная p. |
, а еще и объявление вида:
| Код | var var_name: type_name absolute another_var; |
, то есть описание переменной, накладывающейся на другую переменную.
Как вариант решения задачи:
| Код | procedure p(var v; m, n: integer); type arrtype = array[1 .. (2 * maxint) div sizeof(integer)] of integer; var arr: arrtype absolute v; begin for i := 1 to m * n do begin { работаем с переданной матрицей, как с одномерным массивом } end; end; |
Идея понятна? В процедуру (я на самом деле не понимаю, зачем тут нужна функция, в задаче не нужно ничего возвращать, только произвести какие-то действия) передается матрица любого размера, хоть 2*3, хоть 120*15, и на нее внутри процедуры накладывается одномерный массив максимально возможного размера, так что зная размер матрицы мы прекрасно сможем пробежаться по всему этому массиву (ну, какая разница, искать минимальный среди положительных в массиве, или в матрице? В массиве еще проще: надо хранить один, а не 2 индекса) и сделать все, что нужно... |