Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   2 Arrays zu 1 Array zusammenfassen (https://www.delphipraxis.net/33128-2-arrays-zu-1-array-zusammenfassen.html)

Alex_ITA01 2. Nov 2004 08:02


2 Arrays zu 1 Array zusammenfassen
 
Moin Moin erstmal,
ich habe folgendes Problem:
2 Integer arrays mit verschiedenen Werten vom Typ:

TIntArray = array of Integer;

Es können aber auch Werte doppelt drinne vorkommen.Genau diese Werte will ich nur einmal haben.
Also die beiden Arrays in EIN array zusammenfassen und alle Einträge die doppelt vorkommen nur einmal in das "zusammengefügte" array "kopieren".
Ich hoffe ihr könnt mir da helfen?!

MFG Alex

freak4fun 2. Nov 2004 08:19

Re: 2 Arrays zu 1 Array zusammenfassen
 
hallo,

also du willst 2 Arrays in einen packen, also so:

ArrayNeu = Array1 + Array2

und dabei die Werte die in Array1 sind nicht nochmal aus Array2 eintargen? Also so:

ArrayNeu = Array1 + (Array2 - Array1)

Dann mch doch folgendes:

ArrayNeu := Array1

For i:=1 to Länge Array1 do
Wenn Array2[i] <> Array1 dann eintargen

oder so änlich :gruebel:

mfg
frek

weißer Zwerg 2. Nov 2004 08:23

Re: 2 Arrays zu 1 Array zusammenfassen
 
Hallo,

Du könntest das Gesamtarray von hinten nach vorne durchlaufen:
Delphi-Quellcode:
for i:=Arraylaenge downto 1 do
und jeweils die aktuelle Zahl mit allen vorherigen Zahlen vergleichen:
Delphi-Quellcode:
for j := i downto 1 do
MfG wZ

fiasko 2. Nov 2004 08:40

Re: 2 Arrays zu 1 Array zusammenfassen
 
Hallo,

ist denn das Array sortiert? Wenn nicht mußt du zwangsläufig für jedes Element aus Array2 Prüfen ob es in Array1 schon drinne ist. Damit wird auch sichergestellt das in Array2 doppelte Werte dann nicht doppelt in Array1 landen.

Pseudo Code:
Delphi-Quellcode:
for i:= 1 to Laenge2 do
begin
  found := false;

  for j:= 1 to Laenge1 do
   if array2[i]=array1[j] then
  begin
    found := true;
    break;
  end;

  if not found then
    Eintragen!
end;

Alex_ITA01 2. Nov 2004 08:41

Re: 2 Arrays zu 1 Array zusammenfassen
 
ich habe es grade mit euren lösungsvorschlägen versucht aber komme nicht so richtig weiter...
Könntet ihr die Beispiele vielleicht ein wenig mit Source versehen? :gruebel:

MFG Alex

Alex_ITA01 2. Nov 2004 08:42

Re: 2 Arrays zu 1 Array zusammenfassen
 
oh danke schön, ich war zu langsam :mrgreen:

Alex_ITA01 2. Nov 2004 09:29

Re: 2 Arrays zu 1 Array zusammenfassen
 
Ich habe es jetzt so probiert aber irgendwie funktioniert das nicht wirklich...
Kannst du mir vielleicht sagen woran es liegen könnte?

Delphi-Quellcode:
var
  i,j    : Integer;
  Found : Boolean;
  Item1  : TIntArray;
  Item2  : TIntArray;
  ArrayGesamt : TIntArray;
begin
  //Item1 und Item2 füllen...

  for i:= 1 to Length(Item2) do
  begin
    found := false;

    for j:= 1 to Length(Item1) do
     if Item2[i]=Item1[j] then
    begin
      found := true;
      break;
    end;

    if not found then
      ArrayGesamt[i] := Item1[j];
  end;

fiasko 2. Nov 2004 12:50

Re: 2 Arrays zu 1 Array zusammenfassen
 
Hallo,

hast du dir mal den Quelltext genau angeschaut? Bei dem Code den du für "Eintragen!" ersetzt hast fügst du doch Elemente aus Array2 die nicht schon in Array1 sind in das neue Array ein. Dort fehlen dann natürlich alle aus array1.

Du hast jetzt 2 Möglichkeiten: wenn in Array1 keine doppelten Einträge enthalten sind bzw. du diese nicht raushaben willst brauchst du ein anderen Ersatz für "Eintragen!", etwas der Art:

Delphi-Quellcode:
array1[length(array1)+1]=array2[i];
Falls du auch keine doppelten Werte aus array1 haben willst, dann mußt du mein Konstrukt zwei mal machen, einmal mit ArrayGesamt und Array1 und dann nochmal ArrayGesamt mit Array2!


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