AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integerwerte vergleichen

Ein Thema von dutyfree · begonnen am 20. Feb 2011 · letzter Beitrag vom 2. Mär 2011
 
Bjoerk

Registriert seit: 28. Feb 2011
Ort: Mannheim
1.384 Beiträge
 
Delphi 10.4 Sydney
 
#7

AW: Integerwerte vergleichen

  Alt 2. Mär 2011, 09:25
ich habe, als ich mich seiner Zeit in dynamische Arrays und Objektorientierung eingearbeitet habe, mal eine unit IntergerListen erstellt.

Delphi-Quellcode:
unit IntegerListen;

interface

type
  TIntegerListe = class (TObject)
    Count : integer;
    Item : array of integer;
    function getItem (const k: integer) : integer;
    procedure setItem (const k: integer; const u: integer);
    procedure addItem (const u: integer);
    procedure insItem (const k: integer; const u: integer);
    procedure delItem (const k: integer);
    procedure clear;
    procedure sort;
    function IndexOf (const u: integer) : integer;
  public
    constructor Create;
    destructor Destroy; override;
  end;

implementation

function TIntegerListe.getItem (const k: integer) : integer;
begin
  RESULT:=Item[k];
end;

procedure TIntegerListe.setItem (const k: integer; const u: integer);
begin
  Item[k]:=u;
end;

procedure TIntegerListe.addItem (const u: integer);
begin
  Count:=Count+1;
  setLength(Item,Count);
  Item[Count-1]:=u;
end;

procedure TIntegerListe.insItem (const k: integer; const u: integer);
var
  i: integer;
begin
  Count:=Count+1;
  setLength(Item,Count);
  for i:=Count-1 downto k+1 do Item[i]:=Item[i-1];
  Item[k]:=u;
end;

procedure TIntegerListe.delItem (const k: integer);
var
  i: integer;
begin
  Count:=Count-1;
  for i:=k to Count-1 do Item[i]:=Item[i+1];
  Item[Count]:=0;
  setLength(Item,Count);
end;

procedure TIntegerListe.clear;
begin
  Count:=0;
  setLength(Item,Count);
end;

constructor TIntegerListe.Create;
begin
  inherited Create;
  clear;
end;

destructor TIntegerListe.Destroy;
begin
  clear;
  inherited;
end;

procedure TIntegerListe.Sort;
var
  i,j,s: integer;
begin
  for i:=0 to Count-2 do
    for j:=i+1 to Count-1 do
    begin
      s:=Item[i];
      if Item[i]>Item[j] then
      begin
        Item[i]:=Item[j];
        Item[j]:=s;
      end;
    end;
end;

function TIntegerListe.IndexOf (const u: integer): integer;
var
  i: integer;
begin
  result:=-1;
  for i:=0 to Count-1 do
    if Item[i]=u then
    begin
      result:=i;
      break;
    end;
end;

end.
Damit sollte es relativ einfach gehen, z.B. so:

Delphi-Quellcode:
implementation

uses
  IntegerListen;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  Liste,Doppel : TIntegerListe;
  i,j : integer;
begin
  // Liste erzeugen
  Liste := TIntegerListe.Create;
  Doppel := TIntegerListe.Create;

  // Liste füllen
  Liste.addItem(5);
  Liste.addItem(2);
  Liste.addItem(-5);
  Liste.addItem(3);
  Liste.addItem(5);
  Liste.addItem(5);

  // Doppel initialisieren
  for i:=0 to Liste.Count-1 do
    Doppel.addItem(1);

  // Doppel herausfinden
  for i:=0 to Liste.Count-2 do
    for j:=i+1 to Liste.Count-1 do
      if Liste.Item[i]=Liste.Item[j] then
        Doppel.Item[i]:=Doppel.Item[i]+1;

  // Doppel rauslöschen
  i:=-1;
  while i<=Liste.Count-2 do
  begin
    i:=i+1;
    if Doppel.getItem(i)>1 then
    begin
      Liste.delItem(i);
      Doppel.delItem(i);
      i:=i-1;
    end;
  end;

  // ggf. sortieren
  Liste.sort;

  // Liste ausgeben
  for i:=0 to Liste.Count-1 do
    showmessage (IntToStr(Liste.getItem(i)));

  // und tschüß
  Liste.Free;
  Doppel.Free;
end;
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz