usuwanie duplikatow

0

Witam
Czy wie ktoś może jak najprościej zrobić w Delphi/Pascalu procedurke która usuwała by duplikaty z tablicy ?? Mam namyśli duplikaty słów w tablicy. Napisałem taki programik ale nie działa już gdy mam więcej niż 1 duplikat.
PLZ HELP
Z góry dzięki za pomoc

0

Najprościej powiadasz.

Bierzesz pierwszą komórkę, i porównujesz ją ze wszystkimi, jak natrafisz na taki sam wpis to całą tablicę przesuwasz o 1 element w lewo, zaczynając od miejsca wystąpienia duplikatu. Potem bierzesz następną komórkę i znowu przeczesujez tablicę.

Można to zmodyfikować o licznik. Jak napotkasz duplikat to zwiększasz licznik o jeden, a przesuwasz w lewo o wartość licznika.

Może nieprecyzyjnie się wyraziłem, jako przesuwanie rozumiem zastępowanie wartości i-tej (i+l)-tą.

0

zamień tablicę na StringList i ustaw Sorted := True i Duplicate := dupIgnore i wsio

0

DZięki - zdążyłem wcześniej już napisać coś takiego: = działa !!!
Jak ktoś mam ewentualnie jakiś pomysł na usprawnienienie algorytmu to bardzo prosze !

procedure TForm1.bbusunduplikatyClick(Sender: TObject);
var
j,i,k,w:integer;
begin
  w:=0;
  for j := 1 to T1.N - 1 do
   begin
   inc(w);
    for i := w to T1.N - 1 do
      if T1.elem[j] = T1.elem[i+1] then
        begin
          for k:=i+1 to T1.N  do T1.elem[k]:=T1.elem[k+1];
          T1.N:=T1.N-1;
        end;
   end;
end;

1 użytkowników online, w tym zalogowanych: 0, gości: 1