如何找出由array of Integer
定义的特定动态数组的最小值和最大值?
例如:
Y: array of integer;
答案 0 :(得分:17)
最简单的方法是使用执行此服务的内置函数。它们被称为MinIntValue
和MaxIntValue
,可以在数学单元中找到。
uses
Math;
....
TheMin := MinIntValue(TheArray);
TheMax := MaxIntValue(TheArray);
答案 1 :(得分:10)
在Math:
单元中有重载函数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
答案 2 :(得分: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;
答案 3 :(得分: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;