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
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;