最小阵列功能?

Da *_*nja 1 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.
Run Code Online (Sandbox Code Playgroud)

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

LU *_* RD 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.
Run Code Online (Sandbox Code Playgroud)

请注意,传递的数组将在函数中从0索引到4.请参见打开阵列参数.这是WriteLn(min);您的代码中的行为的原因.偶然的,超出范围A [5]返回零.

打开{$ R +}以在调试时添加范围检查.总是!