제가 궁금한 것은 하나의 2차원 배열을 프로시져의 파라미터로 넘기는 방법입니다. 여러가지로 해 보았는데 잘 안되는군요.
책에 보니 다음과 같이 되어 있더군요.
function sum (const A: array of integer):integer;
begin
....
end;
이 함수에 배열을 전달할때는 sum(List)라고 하면 된다고 합니다. 물론 List는 배열의 이름입니다.
그런데 이런 방법은 에러가 나더군요. 제가 작성한 내용은 다음과 같습니다.
Procedure Inverse(const original : Array of Integer; row : integer);
var
temp : Array[1..18,1..11] of integer;
begin
for i:= 1 to row do begin
for j:=1 to row do begin
temp[i,j] := original[i,j]; ---> error 발생
end;
end;
end;
화살표 있는데서 에러가 나더군요. 배열 타입이 요구된다고 합니다.
고수님들의 조언 좀 부탁드립니다.
> 제가 궁금한 것은 하나의 2차원 배열을 프로시져의 파라미터로 넘기는 방법입니다. 여러가지로 해 보았는데 잘 안되는군요.
> 책에 보니 다음과 같이 되어 있더군요.
> function sum (const A: array of integer):integer;
> begin
> ....
> end;
>
> 이 함수에 배열을 전달할때는 sum(List)라고 하면 된다고 합니다. 물론 List는 배열의 이름입니다.
>
> 그런데 이런 방법은 에러가 나더군요. 제가 작성한 내용은 다음과 같습니다.
>
> Procedure Inverse(const original : Array of Integer; row : integer);
> var
> temp : Array[1..18,1..11] of integer;
> begin
> for i:= 1 to row do begin
> for j:=1 to row do begin
> temp[i,j] := original[i,j]; ---> error 발생
> end;
> end;
> end;
>
> 화살표 있는데서 에러가 나더군요. 배열 타입이 요구된다고 합니다.
> 고수님들의 조언 좀 부탁드립니다.
이현섭님 안녕하세요?
Type 으로 선언해서 해결하세요.
예를 들면,
type
arrayType = array[0..9, 0..9] of char;
이런 형태로 선언해두고,
이를 인자로 받을 function은 아래처럼,
function ArraySub( Temp: arrayType ): arrayType;
begin
...
end;
이런 형태로 사용하시면 됩니다.
물론 함수를 부를 곳에서는
var aaa: arrayType; //<-- array[0..9, 0..9] of Char;
begin
ArraySub(aaa); // 이런 형태로 호출하시면 됩니다.
end;
이해 되셨으면 좋겠네요.
그럼.. 즐거운 프로그래밍~~~