Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi datenvergleich: kleinste gemeinsamkeit (https://www.delphipraxis.net/31049-datenvergleich-kleinste-gemeinsamkeit.html)

Meflin 3. Okt 2004 14:53


datenvergleich: kleinste gemeinsamkeit
 
Hi,
ich habe in 4 arrays daten (nur ganzzahlen). nun möchte ich 3 dieser arrays vergleichen, und zwar rausfinden, welche am wenigsten zahlen aus dem 4. array gemeinsam haben. wie macht man das am dümmsten? eine umwandlung der daten in andere formate sollte auch kein problem sein, ich brauche nur irgendeinen lösungsweg...

*MFG*

Delphi-Freak 3. Okt 2004 15:07

Re: datenvergleich: kleinste gemeinsamkeit
 
Naja, ich würde das so lösen:
Du brauchts 3 Variablen (Zahlen), z.B. matches1, matches2, matches3.
Dann durchläufst du über drei for-Schleifen die 3 Arrays und fragst für jedes Element ab, ob es im 4. Array drinnen ist, wenn ja, dann zählst du zu matches1 bzw. matches2/3 eins dazu. Am Schluss schaust du welches der 3 Zahlen die kleinste ist und weißt dann wo's die wenigsten Übereinstimmungen gibt. 8)

Hoffe es ist dir hilfreich :-D

LG

Meflin 3. Okt 2004 19:27

Re: datenvergleich: kleinste gemeinsamkeit
 
gut, das dachte ich auch, nur dass es auch 5 oder 6 oder 100 arrays sein können, die verglichen werden müssen. hätt ich vielleiht gleich sagen sollen... was dann? sprich die anzahl der arrays ist variable, nicht vorhersehbar!

Delphi-Freak 3. Okt 2004 20:24

Re: datenvergleich: kleinste gemeinsamkeit
 
naja, wenn es komponenten wären, z.b. bilder (abgesehen davon, dass bilder nicht als arrays anzusprechen sind :oops: ), dann wäre es auch nicht so schwer. :mrgreen:
statt den 3 for-schleifen folgender code:
Delphi-Quellcode:
for i := 0 to anzahlarrays do begin
   element := TImage(FindComponent('bild' + inttostr(i)));
   for j := 0 to Length(element) do begin
      ...
   end;
end;
sollte funzzen

wie das dann mit arrays geht :?: :?: no ahnung, vielleicht nur findcomponent?

LG :-D

Meflin 4. Okt 2004 16:01

Re: datenvergleich: kleinste gemeinsamkeit
 
hab ne lösung, dass ich da nicht gleich drauf gekommen bin :wall: :
hab ein zusätzlichers array das so lang ist wie die anzahl der zu vergleichenden arrays und in dem für jedes array einen counter...

*MFG*

shmia 4. Okt 2004 16:38

Re: datenvergleich: kleinste gemeinsamkeit
 
Zitat:

Zitat von Meflin
hab ein zusätzlichers array das so lang ist wie die anzahl der zu vergleichenden arrays und in dem für jedes array einen counter...

Oder noch sparsamer:
Der Vergleich 2er Arrays liefert eine Zahl mit Anzahl der Übereinstimmung (ich nenns mal Alpha).
Jetzt brauchst du dir nur noch das Minimum an Übereinstimmung und den Index des
dazugehörenden Arrays zu merken.
Delphi-Quellcode:
minimum_arrayindex := 0;
minimum_alpha := maxInt;

for i := 0 to anzahlarrays do
begin
   alpha := Vergleiche(masterarray, array[i]);
   if alpha < minimum_alpha then
   begin
      minimum_alpha := alpha;
      minimum_arrayindex := i;
   end ;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 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 by Thomas Breitkreuz