解決問題:如有一組數字,55 68 79 120 130 180 先進行最大兩個數的比對,譬如 130 180 比對,取小值,得到130,大的180-130=50, 然後在將50放入剩餘的55 68 79 120比對,重複上面的比對要求,如79 120 比對結果41 再和55 68比對,執行直至最後兩個的差值。
uses generics.collections, generics.defaults
;
具體**如下:
var
i, x: integer;
dd, dd1: tarray;
//定義兩個泛型變數
begin
dd:= [180, 68, 79, 120, 130, 55];
//給變數賦值
x := length(dd);
//取長度以方便計算
while x > 1 do
begin
tarray.sort
(dd);//使用泛型排序
i:= dd[x - 1] - dd[x - 2];
//計算兩最大數差值
setlength(dd1, x - 1);//設定過渡變數長度(這裡為了使用泛型copy,否則可以直接使用下面注釋**)
tarray.copy
(dd, dd1, 0, 0, x - 2);//泛型複製
dd1[x - 2]
:= i;
//將差值加入到目標陣列
dd:= dd1;
//改變原陣列
x := length(dd);
end;
end;
泛型的引入與案例
泛型引入原因 public class objecttool public void setobj object obj 早期的時候,我們使用object來代表任意的型別。向上轉型是沒有任何問題的,但是在向下轉型的時候其實隱含了型別轉換的問題。也就是說這樣的程式其實並不是安全的。所以j a在jdk5...
delphi2010泛型練習
showmessage 該會員代號已存在,不能重複新增。end procedure tform1.edit2keypress sender tobject var key char begin if key 13 then button1.click end procedure tform1.but...
泛型的使用
unit unit1 inte ce uses winapi.windows,winapi.messages,system.sysutils,system.variants,system.classes,vcl.graphics,vcl.controls,vcl.forms,vcl.dialogs ...