![]() |
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 |
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 |
Re: 2 Arrays zu 1 Array zusammenfassen
Hallo,
Du könntest das Gesamtarray von hinten nach vorne durchlaufen:
Delphi-Quellcode:
und jeweils die aktuelle Zahl mit allen vorherigen Zahlen vergleichen:
for i:=Arraylaenge downto 1 do
Delphi-Quellcode:
MfG wZ
for j := i downto 1 do
|
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; |
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 |
Re: 2 Arrays zu 1 Array zusammenfassen
oh danke schön, ich war zu langsam :mrgreen:
|
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; |
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:
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!
array1[length(array1)+1]=array2[i];
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:03 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