AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

integer arrays vergleichen

Ein Thema von Grumble · begonnen am 30. Apr 2003 · letzter Beitrag vom 5. Mai 2003
Antwort Antwort
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#1

integer arrays vergleichen

  Alt 30. Apr 2003, 13:10
hallo,

ich hab da n prob, ich habe 2 arrays mit integer werten, nun moechte ich die einzelnen werte beider vergleichen (es gibt gleiche werte in beiden arrays) und die unterschiedlichen werte in ein drittes array speichern, ich bekomm das irgendwie nich hin, hab wohl grad ne denkblockade

gruss
Grumble
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#2
  Alt 30. Apr 2003, 13:21
Möchtest Du die einzelnen Elemente der Arrays vergleichen (also: stimmt a[i] mit b[i] überein?) oder möchtest Du wissen, ob ein Element aus Array a überhaupt irgendwo in Array b vorkommt?
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#3
  Alt 30. Apr 2003, 14:37
also es ist so, dass im ersten array sagen wir 6 ungleiche werte stehen und 2 beliebige davon stehen im zweiten array, ich moechte jetzt die gegenmenge also die 4 restlichen werte ins dritte array speichern.

sorry dass die antwort so lange gedauert hat aber meine netzverbindung hakt heute irgendwie

Grumble
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#4
  Alt 30. Apr 2003, 15:04
Die Sofort-Lösung, die sicherlich sehr langsam ist, aber funktioniert:

Ich gehe von Arrays aus, bei denen die Reihenfolge nicht wichtig ist!

Delphi-Quellcode:
VAR a, b, c : Array of Integer;
    i, k : Integer;
begin
  //a ist in Deinem Bsp das Array mit den 6 Werten
  //b ist in Deinem Bsp das Array mit den 2 auch in a enthaltenen Werten
  //C ist a ohne die in b enthaltenen Werten

  c:=Copy(a);
  for i:=High(c) Downto 0 Do
  begin
    k:=0;
    while (b[k] <> c[i]) and (k<High(b)) do inc(k);
    if b[k] = c[i] then
    begin
      c[i]:=c[High(c)]; //Hier brauchst Du das "unsortiert", das ich vorausgesetzt habe.
      SetLength(c,Length(c)-1);
    end;
  end;
end;
Nochmal zum "unsortiert": wenn Du ein sortiertest Array hast, musst Du bei der im Quelltext markierten Zeile anders vorgehen, um c[i] zu löschen. Dann musst Du alle nachfolgenden Einträge um eins nach vorne verschieben. Wenn Du erwartest, viele Einträge löschen zu müssen, ist es wahrscheinlich besser, wenn Du zuerst wie bei einem unsortierten Array vorgehst und das Array hinterher neu sortierst.

MfG,
Peter

[edit=daniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von Grumble
Grumble

Registriert seit: 19. Mär 2003
Ort: Dresden
203 Beiträge
 
Delphi 6 Enterprise
 
#5
  Alt 30. Apr 2003, 15:14
vielen dank, ich werd das mal ausprobieren

gruesse
Grumble
  Mit Zitat antworten Zitat
ssach

Registriert seit: 9. Dez 2002
Ort: schleiwenhaff
99 Beiträge
 
Delphi 6 Professional
 
#6
  Alt 5. Mai 2003, 18:08
hy,

glaube dies ist die einfachste loesung, hab irgendwo auf meinem pc noch ein aelteres probramm liegen wo ich eine ahnliche funktion benutzt habe, also falls du probleme hast schreib und ich schaue mal ob ichs wiederfinde!

cu
Greissen all d'Letzebuerger !!
  Mit Zitat antworten Zitat
Benutzerbild von Christian S.
Christian S.

Registriert seit: 19. Apr 2003
Ort: Düsseldorf
835 Beiträge
 
#7
  Alt 5. Mai 2003, 18:25
Hi!

Mich würde die alternative Funktion schon interessieren. Ich wüsste gerne, ob es da noch was schnelleres gibt, als das, was ich gepostet habe.

MfG,
Peter
Christian S.
Admin in der Entwickler-Ecke
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#8
  Alt 5. Mai 2003, 20:23
Oft verschmäht und eigentlich überflüssig, aber wie geschaffen für solche Operationen: SETS!!!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:52 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