我到底做错了什么?每次因为某些原因给出5个数字,它返回0
var
I : integer;
Ligne : array[1..5] of integer;
function MinArray( var A : array of integer) : integer;
var I,min : integer;
begin
min := A[1];
for I := 1 to 5 do
if A[I] < min then
min := A[I] ;
writeln(min);
end;
begin
for I := 1 to 5 do
readln(Ligne[I]);
MinArray(Ligne);
sleep(50000);
end.
如果我把它从功能上取下来,它工作正常,它给了我正确的答案,但是当我尝试使用一个功能时,我无法让它工作。
答案 0 :(得分:7)
您必须为该功能指定Result
:
function MinArray( var A : array of integer) : integer;
var I : integer;
begin
Result := A[Low(A)];
for I := Low(A) + 1 to High(A) do
if A[I] < Result then
Result := A[I] ;
end;
begin
...
WriteLn(MinArray(Ligne));
...
end.
请注意,传递的数组将在函数中从0索引到4。
见Open array parameters。这是代码中WriteLn(min);
行为的原因。偶然的,超出范围A [5]返回零。
打开{$ R +}以在调试时添加范围检查。总是!