全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1186
推到 Plurk!
推到 Facebook!

陣列相同資料統計的問題

答題得分者是:richtop
inglong
初階會員


發表:28
回覆:27
積分:36
註冊:2004-08-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-08-31 20:21:55 IP:220.132.xxx.xxx 未訂閱
大家好: 我現在有一個問題:就是我要統計輸入到陣列裡的資料有幾種 舉個例子: i 0 1 2 3 4 5 6 7 8 9 A[i] 5 4 3 4 5 3 2 5 1 2 那得到的是 5有3個 4有2個 3有2個 2有兩個 1有1個 那我要將重複的去掉,變成都只有一個,也就是當前面如果有出現了 後面就不再出現 ==> ni 0 1 2 3 4 A[ni] 5 4 3 2 1 我的寫法是 for i:=0 to 100 do begin for j:=100 down to i 1 do begin if ( A[i]<>A[j] ) then begin B[i]:=B[j]; end; else begin next; end; end; end; 不過這樣好像還是一樣 請問各位有比較好的方法嗎? 謝謝~ 何需Coding爭峰 千人指 萬人鋒 敢問Coding頂峰 三尺秋水塵不染 天下無雙
------
何需Coding爭峰
千人指 萬人鋒
敢問Coding頂峰
三尺秋水塵不染
天下無雙
richtop
資深會員


發表:122
回覆:646
積分:468
註冊:2003-06-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-08-31 22:11:18 IP:211.76.xxx.xxx 未訂閱
inglong 您好:    一個簡單作法,供您參考看看:    
unit FindUnique0;    interface    uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;    type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;      MyArray = array[0..9] of integer;
var
  Form1: TForm1;
  a : MyArray = (5, 4, 3, 4, 5, 3, 2, 5, 1, 2);
  b : MyArray;
implementation    {$R *.dfm}
procedure showArray(ary :MyArray; len :integer);
var
   k   : integer;
   msg : string;
begin
  for k:=1 to len do
     begin
       msg := msg   Format('%d'#13, [ary[k-1]]);
     end;
  ShowMessage(msg);
end;    procedure TForm1.Button1Click(Sender: TObject);
var
   k, p, total, len : integer;
begin
  total := 0;
  len := High(a) - Low(a)   1;  // get the size of array "a"
  showArray(a, len);
  if ( len>0 ) then total := 1; // more than one element case
  for k:=1 to len-1 do
     begin
       for p:=0 to total-1 do
          begin
            if ( a[k]=a[p] ) then break;
          end;
       if ( p>=total ) then   // no same number found
         begin
           a[total] := a[k];  // add in new number
           total := total  1;
         end
     end;
  showArray(a, total);
end;    end.    
RichTop 敬上 =====***** 把數學當工具,可以解決問題;將數學變能力,能夠發現並解決問題! =====#####
jest0024
高階會員


發表:11
回覆:310
積分:224
註冊:2002-11-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-09-01 01:47:05 IP:59.104.xxx.xxx 未訂閱
procedure TForm1.Button1Click(Sender: TObject);
var
  Ary :Array[0..High(Byte)]of Integer;
  Data:Array of Byte;
  i   :Integer;
  s   :String;
begin
  SetLength(Data,100);
  for i:=0 to Length(Data)-1 do Data[i]:=Random(High(Byte)); //設定資料      FillChar(Ary,Sizeof(Ary),0);
  for i:=0 to Length(Data)-1 do Inc(Ary[Data[i]]);
  for i:=0 to High(Byte) do
    if(ary[i]>0)then ListBox1.Items.Add(Format('%0.2d,(%d)',[i,ary[i]]));
end;
發表人 - jest0024 於 2005/09/01 01:59:41
系統時間:2024-04-25 18:57:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!