function getmode(xarr:arrd):double; var modecount,same,i:integer; former,mode:double; begin ascend(xarr); modecount:=0; former:=xarr[0]; same:=0; for I:=0 to high(xarr) do if xarr[i]=former then begin same:=same+1; if same>=modecount then begin modecount:=same; mode:=xarr[i]; end; end else begin former:=xarr[i]; same:=1; end; result:=mode; end; ascend是排序函数代码如下 procedure ascend(var array1:arrd); var ex:boolean; broker:double; i:integer; begin ex:=false; if not (high(array1)<1) then repeat for i:=0 to high(array1)-1 do begin if (i=0) then ex:=false; if array1[i]>array1[i+1] then begin broker:=array1[i]; array1[i]:=array1[i+1]; array1[i+1]:=broker; ex:=true; end; end; until not ex; end; 取最后一个众数,如果多于一个众数,要用多维数组,如果你要,再来问我。
注意type arrd=array of double;
for I:=0 to high(xarr) do if xarr[i]=former then begin same:=same+1; if same>=modecount then begin modecount:=same; mode:=xarr[i]; end; end else begin former:=xarr[i]; same:=1; end;是不是錯了,每次隻能取排序後的第一個值。
var modecount,same,i:integer;
former,mode:double;
begin
ascend(xarr);
modecount:=0;
former:=xarr[0];
same:=0;
for I:=0 to high(xarr) do if xarr[i]=former then
begin
same:=same+1;
if same>=modecount then
begin
modecount:=same;
mode:=xarr[i];
end;
end
else
begin
former:=xarr[i];
same:=1;
end;
result:=mode;
end;
ascend是排序函数代码如下
procedure ascend(var array1:arrd);
var ex:boolean;
broker:double;
i:integer;
begin
ex:=false;
if not (high(array1)<1) then
repeat
for i:=0 to high(array1)-1 do
begin
if (i=0) then ex:=false;
if array1[i]>array1[i+1] then
begin
broker:=array1[i];
array1[i]:=array1[i+1];
array1[i+1]:=broker;
ex:=true;
end;
end;
until not ex;
end;
取最后一个众数,如果多于一个众数,要用多维数组,如果你要,再来问我。
begin
same:=same+1;
if same>=modecount then
begin
modecount:=same;
mode:=xarr[i];
end;
end
else
begin
former:=xarr[i];
same:=1;
end;是不是錯了,每次隻能取排序後的第一個值。