3

如何找出由定义的某个动态数组的最小值和最大值array of Integer

前任:

Y: array of integer;
4

4 回答 4

17

最简单的方法是使用执行此服务的内置函数。它们被称为MinIntValue并且MaxIntValue可以在数学单元中找到。

uses
  Math;
....
TheMin := MinIntValue(TheArray);
TheMax := MaxIntValue(TheArray);
于 2013-08-28T07:22:04.230 回答
10

在单元数学中有为此的重载函数:

function MinValue(const Data: array of Single): Single; overload;
function MinValue(const Data: array of Double): Double; overload;
function MinValue(const Data: array of Extended): Extended; overload;
function MinIntValue(const Data: array of Integer): Integer;

function MaxValue(const Data: array of Single): Single; overload;
function MaxValue(const Data: array of Double): Double; overload;
function MaxValue(const Data: array of Extended): Extended; overload;
function MaxIntValue(const Data: array of Integer): Integer;

因为您使用的是整数,所以您应该使用 MinIntValue 和 MaxIntValue

于 2013-08-28T07:44:25.823 回答
5

您必须遍历数组,寻找所需的值,例如:

function TMyClass.GetMinValue: Integer;
var
  Idx: Integer;
begin
  Result := MyArray[Low(MyArray)];
  for Idx := Low(MyArray)+1 to High(MyArray) do
  begin
    if MyArray[Idx] < Result then
      Result := MyArray[Idx];
  end;
end;

function TMyClass.GetMaxValue: Integer;
var
  Idx: Integer;
begin
  Result := MyArray[Low(MyArray)];
  for Idx := Low(MyArray)+1 to High(MyArray) do
  begin
    if MyArray[Idx] > Result then
      Result := MyArray[Idx];
  end;
end;
于 2013-08-27T16:54:00.043 回答
3

它可以在一个循环中完成......

function ArrayValRange( somearray: array of integer; var minval: integer; var maxval: integer): boolean;
var
   i: integer;
begin
  result := false;
  if length( somearray) < 1 then
      exit;
  result := true;

  maxval = somearray[ Low(somearray)];
  minval = maxval;

  for i := Low(somearray)+1 to High(somearray) do
  begin
    if somearray[i] > maxval then
      maxval := somearray[i];

    if somearray[i] < minval then
      minval := somearray[i];

  end;
end;

然后

if ArrayValRange( myarray, min, max) then
begin
   //do your thing
end;
于 2013-08-28T19:29:02.157 回答