最小阵列功能?

时间:2016-06-08 18:39:46

标签: delphi

我到底做错了什么?每次因为某些原因给出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.

如果我把它从功能上取下来,它工作正常,它给了我正确的答案,但是当我尝试使用一个功能时,我无法让它工作。

1 个答案:

答案 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 +}以在调试时添加范围检查。总是!