|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
Правильно передать многомерный массив в процедуру.
Ситуация следующая.
Необходимо в процедуру передать многомерный массив. Самой процедуре требуется параметр с одномерным массивом. Процедура например - procedure xzxz (array of real); а передать в процедуру требуется первую размерность например следующего массива - k:array [1..50,1..100,1..150] of real; Если написать так - xzxz(k[1,1]); то в процедуру попадут элементы 3-ей размерности массива 'к'. Т.е. те которые от 1 до 150. А необходимо что бы в процедуру попали элементы 1-ой размерности, т.е. те что от 1 до 50... Помогите пожалуйста! |
#2
|
|||
|
|||
Нет никакой ниобходимости комплексовать по поводу передачи параметра. Все равно параметр в этом случае представлен указателем на массив.
А одномерный он или многомерный никакого значения не имеет: указатель он и есть указатель. Поэтому смело можно передавать в процедуру трехмерный массив в параметре, а в реализации процедуры работать уже с нужным подмассивом. |
#3
|
|||
|
|||
Впринципе можно и так, только как при описании процедуры сказать ей что надо принять 3-ёх мерный массив?
procedure xzxz (array of real); - так кампилятор не ругается а если так procedure xzxz(array of array of array of real); - кампилятор говорит - "indetefier expected but aaray found" |
#4
|
|||
|
|||
Именно так:
Код:
procedure xzxz (array of real); |
#5
|
|||
|
|||
Я тогда не очень понимаю как передать в процедуру xzxz(array of real); массив
k:array [1..10,1..20,1..30] of real; при подстановке xzxz(k); кампилятор говорит - "Incompatible types". |
#6
|
|||
|
|||
Необходимо обявить тип массива:
Код:
type Tk = array[1..50, 1..100, 1..150] of Double; Код:
var k : Tk; или const k : Tk = (...); ... procedure zzz(kk : Tk); begin end; ... zzz(k); //вызов |