Einzelnen Beitrag anzeigen

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