Q&A

  • 배열을 프로시져의 파라미터로 넘기는 방법.
제가 궁금한 것은 하나의 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;



화살표 있는데서 에러가 나더군요. 배열 타입이 요구된다고 합니다.

고수님들의 조언 좀 부탁드립니다.

1  COMMENTS
  • Profile
    구창민 1999.10.03 05:20
    이현섭 wrote:

    > 제가 궁금한 것은 하나의 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;



    이해 되셨으면 좋겠네요.

    그럼.. 즐거운 프로그래밍~~~