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
Antwort Antwort
dutyfree

Registriert seit: 9. Mär 2009
83 Beiträge
 
#1

Integerwerte vergleichen

  Alt 20. Feb 2011, 15:53
Hallo,

wie kann ich am besten verschiedene Integerwerte vergleichen?

Also ich habe 10 Werte und will gucken ob es welche doppelt oder dreifach gibt..

danke
  Mit Zitat antworten Zitat
-187-

Registriert seit: 24. Sep 2005
483 Beiträge
 
Delphi 2010 Architect
 
#2

AW: Integerwerte vergleichen

  Alt 20. Feb 2011, 15:59
Du kannst die Werte in einer TStringList mit einer Schleife durchlaufen und zählen wie oft ein Wert vorkommt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Integerwerte vergleichen

  Alt 20. Feb 2011, 15:59
Am Besten zuerst sortieren
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: Integerwerte vergleichen

  Alt 20. Feb 2011, 16:07
Falls du D2009 oder neuer hast dürfte eine generische TList<Integer> das beste sein.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von markus5766h
markus5766h

Registriert seit: 5. Mär 2009
Ort: Hamburg
569 Beiträge
 
Delphi XE8 Professional
 
#5

AW: Integerwerte vergleichen

  Alt 20. Feb 2011, 18:13
. . . oder . . . ein Array of Integer benutzen und per Schleife
prüfen ob ein Wert mehrfach vorhanden ist.
Markus H.
  Mit Zitat antworten Zitat
Benutzerbild von ibp
ibp

Registriert seit: 31. Mär 2004
Ort: Frankfurt am Main
1.511 Beiträge
 
Delphi 7 Architect
 
#6

AW: Integerwerte vergleichen

  Alt 21. Feb 2011, 08:01
wie liegen denn die Werte vor?
  Mit Zitat antworten Zitat
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, 10: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
Antwort Antwort


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 16:01 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz