Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Test, ob 5 Integer verschiedene Werte haben (https://www.delphipraxis.net/126670-test-ob-5-integer-verschiedene-werte-haben.html)

hoika 30. Dez 2008 15:54


Test, ob 5 Integer verschiedene Werte haben
 
Hallo,

ich stehe mal wieder auf dem Schlauch.

Delphi-Quellcode:
var
  i1,i2,i3,i4,i5: Integer;
begin
  i1:= 1;
  i2:= 2;
  i3:= 3;
  i4:= 4;
  i5:= 6;
  Check(i1,i2,i3,i4,i5)=True;

  i5:= 4;
  Check(i1,i2,i3,i4,i5)=False;
Jeder der i-Werte muss also verschieden von den anderen sein
Wie muss die Check-Funktion aussehen ?

Performance spielt keine Rolle.
Bisheriger Ansatz (alles mit and verknüpft).

i1<>i2
i1<>i3
i1<>i4
i1<>i5
i2<>i3
i2<>i4
i2<>i5
i3<>i4
i3<>i5
i4<>i5

Geht das auch anders ?


Danke


Heiko

Namenloser 30. Dez 2008 16:01

Re: Test, ob 5 Integer verschiedene Werte haben
 
Zumindest müsstest du die Werte in ein Array einlesen.

Von da aus hast du verschiedene Möglichkeiten: Entweder du probierst alle Möglichkeiten mit einer For-Schleife durch (also praktishc das, was du oben manuell gemacht hast), oder du Sortierst das Array, läufst es von Anfang bis Ende durch und prüfst bei jedem Eintrag ob es sich vom Vorhergehenden unterscheidet.

Was effizienter ist, hängt schätzungsweise vom Sortierverfahren und der Länge des Arrays ab. Aber was du einsetzt ist wohl Geschmackssache, da es dir ja auf Performance nicht anzukommen scheint.

Dax 30. Dez 2008 16:20

Re: Test, ob 5 Integer verschiedene Werte haben
 
Das ist der ideale Fall für offene Arrayparameter ;)
Delphi-Quellcode:
funtion Check(arr: array of integer): boolean;
var x, y: intger;
begin
  Result := false;
  for x := 0 to high(arr) - 1 do
    for y := x + 1 to high(arr) do
      if arr[x] = arr[y] then exit;
  Result := true;
end;


Check([i1, i2, i3, i4, i5]);

Namenloser 30. Dez 2008 16:27

Re: Test, ob 5 Integer verschiedene Werte haben
 
Zitat:

Zitat von Dax
Delphi-Quellcode:
funtion Check(arr: array of integer): boolean;
var x, y: intger;
begin
  Result := false;
  for x := 0 to high(arr) - 1 do
    for y := x + 1 to high(arr) do
      if arr[x] = arr[y] then exit;
  Result := true;
end;
Check([i1, i2, i3, i4, i5]);

Sowas geht? Ich dachte, das ginge nur mit Array of Const und Konstanten. Coole Sache :)

Die Muhkuh 30. Dez 2008 16:32

Re: Test, ob 5 Integer verschiedene Werte haben
 
Spendier der Funktion noch ein c und dann passt es *g*

hoika 30. Dez 2008 16:35

Re: Test, ob 5 Integer verschiedene Werte haben
 
Hallo,

uiuiui,

klappt ! Danke !!

Ds kannte ich ja noch gar nicht ... *zugeb*

zum Spendieren, ich gebe dem intger noch ein e ;)


Heiko


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:22 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