我有以下问题。
当我尝试使用arun file.obj (我已经用algol.exe文件编译)来运行代码时
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;我仍然收到错误:
ERROR 3
ADD PBASE PROC LOC
07D4 0886 1 13
083A 0842 0 115我使用的编译器是RHA (Minisystems)有限公司的"The Rogalgol Algol60“产品。
错误3表示“调用了3个过程,其中实际参数类型和形式参数类型不匹配。”
但我不明白为什么。错误的原因是ti。
有人知道我做错了什么吗?
我在dosbox (linux)上编译代码
发布于 2013-10-15 09:30:41
问题是传递给过程的整数数组的索引与他期望的整数不同。我记不清一个整数数组是什么,但我猜它不是整数……我不得不承认我从来没有用过它们,但是记不住为什么。可能是因为像这样的限制。我坚持使用实数组和EBCDIC数组。
你几乎可以通过定义一个新的整数j来修复它;在你调用‘:=’之前插入"j fun ti;“;然后用'j‘而不是ti来调用'fun’。
顺便说一句,你可能想让数组(和'for‘循环)是零相对的。ALGOL基本上是零相对的,我认为如果你顺其自然,它可能会节省内存。
让我知道这是否有帮助...
https://stackoverflow.com/questions/19339637
复制相似问题