2013-10-12 2 views
0

다음과 같은 문제가 있습니다.Algol60 배열의 정수 요소를 매개 변수로 전달합니다. 잘못된 형식

ERROR 3 
ADD PBASE PROC LOC 
07D4 0886 1 13 
083A 0842 0 115 

내가 사용하는 컴파일러 : 나는 룬 file.obj로 코드를 실행하려고하면

BEGIN 

    INTEGER PROCEDURE fun(tab,index,lower,upper); 
     INTEGER tab,index,lower,upper; 
    BEGIN 
     INTEGER t; 
     text (1, "Start"); 
     t := 0; 

     FOR index := lower STEP 1 UNTIL upper DO 
      t := t + tab; 

     fun := t; 

    END; 

    INTEGER ARRAY t[1:10]; 
    INTEGER i,result,lower,upper; 

    lower := 1; 
    upper := 10; 

    FOR i := 1 STEP 1 UNTIL 10 DO 
     t[i] := i; 

    i := 1; 

    result := fun(t[i],i,lower,upper); 
END FINISH; 

난 여전히 오류가 발생하고 (나는 algol.exe 파일로 컴파일)

오류 3은 "실제 및 형식 매개 변수 유형이 일치하지 않는 곳에서 호출되는 프로 시저"를 의미합니다.

하지만 이유를 모르겠습니다. 오류의 이유는 t [i]입니다 (내가 i로 변경하면 괜찮습니다).

누군가 내가 잘못하고있는 것을 알고 있습니까?

나는

답변

1

문제는 당신이 당신의 프로 시저에 전달하는 정수 배열의 인덱스는 그가 기대하다는 정수와 동일하지 않습니다 있다는 것입니다 도스 박스 (리눅스)에 코드를 컴파일합니다. 정수 배열이 무엇인지는 기억이 나지 않지만 정수가 아닌 것 같습니다 ... 결코 사용하지 않는다는 것을 인정해야하지만 왜 기억할 수는 없습니다. 아마도 이런 한계 때문에. 나는 실제 배열과 EBCDIC 것들을 고수한다.

새 정수 j를 정의하면 거의 수정할 수 있습니다. 삽입 "j : = t [i];" 'fun'을 부르기 전에; 그런 다음 t [i]가 아닌 'j'로 'fun'를 호출합니다.

둘째, 배열 (및 'for'루프)을 0으로 만들 수도 있습니다. ALGOL은 대부분 0의 상대 값을 가지며 흐름을 따라 가면 메모리를 절약 할 수 있다고 생각합니다.

매우 긴 응답 시간에 대한

+0

죄송합니다 .... 만약이게 도움이 될지는 좀 알려주세요, 그러나 나는 어려움이 있었다;) 네, 확실히 작동하지만, 어쩌면 내가 할 무엇을 의미하는지 말했다하지 않은 . 젠슨의 장치를하고 싶습니다. 이 코드 (몇 가지 변경 사항 - 인쇄 할 다른 기능)는 [NASE A60] (http://www.bertnase.de/a60/)에서 잘 작동합니다. 그것이 구현이나 버그에서만 차이가 있다면 궁금해. – tpsa

관련 문제