Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Mehrere Variablen auf Ungleichheit prüfen (https://www.delphipraxis.net/72121-mehrere-variablen-auf-ungleichheit-pruefen.html)

Green 26. Jun 2006 00:07


Mehrere Variablen auf Ungleichheit prüfen
 
Also ich hab mehrere Variablen (10stück) und will prüfen ob keine davon mit einer der anderen identisch ist, also keine der 10 vars darf gleich sein... hat jemand ne idee? oder gar nen algo :gruebel: :drunken:

:dp:

ferby 26. Jun 2006 00:15

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo,


sind die 10 Variabeln in einem Array? Weil dann würd es leicht gehen




Delphi-Quellcode:

// variabelngleich: boolean;
// variabelspeicher: array [1..10] of string;

variabelngleich:=false;

for i:=1 to 10 do
for i2:=1 to 10 do
if i2<>i then
if variabelspeicher[i] = variabelspeicher[i2] then variabelngleich:=true;
Hab's nicht getestet....

Luckie 26. Jun 2006 00:19

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Die if-Bedingung wird wohl immer Gleicheit ergeben, da du immer die gleichen Arrayelemente vergleichst. ;) Du musst dir das erste Elemente nehmen, es mit allen anderen vergleichen, dann das nächste und so weiter.

ferby 26. Jun 2006 00:22

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo,

wieso tu ich doch, oder????

omata 26. Jun 2006 00:24

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo Luckie,

aber das macht er doch. Ok ist nicht toll eingerückt aber eigentlich ok.

Gruss
Thorsten

ferby 26. Jun 2006 00:29

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo,

denk ich mir ja, dass das stimmt,
jetzt war ich total verwiert,
aber ich habs ausprobirt,
mit eingerückten Text :-) und es geht


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  i,i2: byte;
  variabelngleich: boolean;
  variabelspeicher: array [1..10] of string;

begin
  variabelspeicher[1]:='hfeo';
  variabelspeicher[2]:='hoda1';
  variabelspeicher[3]:='ho2wwe1';
  variabelspeicher[4]:='ho321';
  variabelspeicher[5]:='ho4w2';
  variabelspeicher[6]:='how426';
  variabelspeicher[7]:='hosda426';
  variabelspeicher[8]:='hofswe426';
  variabelspeicher[9]:='1';
  variabelspeicher[10]:='fas1';

  variabelngleich:=false;

  for i:=1 to 10 do
    for i2:=1 to 10 do
      if i2<>i then
          if variabelspeicher[i] = variabelspeicher[i2] then
            variabelngleich:=true;

  if variabelngleich then showmessage('Is was gleich');
end;

omata 26. Jun 2006 00:37

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Blödsinn gelöscht...

Gruss
Thorsten

ferby 26. Jun 2006 00:42

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo,

wieso, das kommt ja auf's selbe hinaus...
ich sage variabelngleich:=false;
also keine Variabeln sind gleich
und sobald Variabeln in der Schleife gleich sind, heißt es, es sind Variabeln gleich...
also für mich ist das logisch

omata 26. Jun 2006 00:50

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Du hast recht...

Gruss
Thorsten

ferby 26. Jun 2006 00:56

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo,

also ich blick nicht ganz durch...
aber ich bin auch schon Hunde müde,
kann gar nicht mehr gscheit denken,
leg mich jetzt hin und les mir das morgen noch mal durch,
vieleicht versteh ic hdann warum mein Ansatz unlogisch ist.....

Also ich geh jetzt pennen,
gut nacht'

Hawkeye219 26. Jun 2006 01:07

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Hallo Green,

falls es Strings sind, stecke sie in eine sortierte TStringList (Duplicates=dupIgnore!) und prüfe, ob die Länge der Stringliste mit der Anzahl deiner Elemente übereinstimmt. Integerwerte kannst du ja zuvor mit IntToStr umwandeln.

Gruß Hawkeye

Amateurprofi 26. Jun 2006 01:32

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Zitat:

Zitat von ferby
Hallo,


sind die 10 Variabeln in einem Array? Weil dann würd es leicht gehen




Delphi-Quellcode:

// variabelngleich: boolean;
// variabelspeicher: array [1..10] of string;

variabelngleich:=false;

for i:=1 to 10 do
for i2:=1 to 10 do
if i2<>i then
if variabelspeicher[i] = variabelspeicher[i2] then variabelngleich:=true;
Hab's nicht getestet....

Besser wäre es wohl so :

Delphi-Quellcode:
// var
//    variabelspeicher: array [1..10] of string;

FUNCTION CheckNotEqual:boolean;
var i,j:integer;
begin
   result:=false;
   for i:=Low(variabelspeicher) to High(variablenspeicher)-1 do
      for j:=i+1 to High(variablenspeicher) do
        if variabelspeicher[i]=variabelspeicher[j] then exit;
   result:=true;
end;
Die Funktion gibt True zurück, wenn keine gleichen Werte gefunden wurden

Vorteil:
Es werden nicht 10*10=100 Vergleiche durchgeführt, sondern im worst case 45 und im best case nur 1 Vergleich.

mr-unbekannt 26. Jun 2006 07:14

Re: Mehrere Variablen auf Ungleichheit prüfen
 
ich würde sagen eine SEHR unelegante lösung wäre so....

Delphi-Quellcode:
var a,b,c,d,e,f,g,h: Irgendwas;

if (a <> b) AND (a <> c) AND .....
(b <> a) AND ( b <> c)...

then
irgendwas

Luckie 26. Jun 2006 08:15

Re: Mehrere Variablen auf Ungleichheit prüfen
 
Zitat:

Zitat von omata
Hallo Luckie,
aber das macht er doch. Ok ist nicht toll eingerückt aber eigentlich ok.

Mist, die Nichteinrückung hat mich getäuscht. :duck:


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