Funkce

Hledám funkci explode pro delphi. Nemáte někdo? Taky by se mi hodil BubbleSort, případně QuickSort. Do komentářů. Dik.

Computer$

Komentáře

Lukáš

17. 9. 2004, 9.32

Explode

AssignFile(F, filename);
  Reset(F);
  Readln(F, S);
  CloseFile(F);
  showMessage(s);
  delka := 0;
  while length(trim(S)) > 0 do begin
    a := Pos(‚,‘, S);
    if (a = 0) then begin
      pole[delka] := StrToInt(S);
      S := '';
    end
  else
    begin
    pole[delka] := StrToInt(copy(S, 0, a – 1));
    inc(delka);
    S := copy(S, a + 1, length(S));
  end;
end;
BubbleSort;
 


kuba-kubula

17. 9. 2004, 9.33

QuickSort

var A:Array[0..33] // arrayka s cislama I,J:Byte; X : integer; For I:=2 to pocet do begin X:=A[I]; A[0]:=X; J:=I-1; While X < A[J] Do Begin A[J+1]:=A[J]; X:=J-1; End; A[J+1]:=X; End;

Andrew

17. 9. 2004, 10.44

Všechno špatně, ani jeden z Vašich kódu není funkce :-)

Já sice nemám, ale už instaluju na Acerovi Delphi, tak ti za pár Granátů nějakou pěknou napíšu :-)


Andrew

17. 9. 2004, 15.17

Tak už je to tady. Furt jsem tomu nemoh přijít na kloub, takže jsem to začal brát osobně… No a řešení bylo nakonec, jako obvykle, přejednoduché :-)

 type Tpole = array of string;
// Delphi ti nedovolí funkci vracející pole, takže musíš přes vlastní typ.

definice fce:
function explode(separa­tor,text:Strin­g): Tpole;

no a už to jede:

function explode;
var i,lastpos:integer;
begin
i:=1;
lastpos:=1;
while (i<=length(text)+1) do begin
  if (copy(text,i,len­gth(separator))=se­parator) or (i=length(text)+1) then begin
    if copy(text,lastpos,i-lastpos)<>'' then begin
      setlength(re­sult,length(re­sult)+1);
      result[len­gth(result)-1]:=copy(text,las­tpos,i-lastpos);
    end;
    inc(i,len­gth(separator));
    lastpos:=i;
  end else begin
    inc(i);
  end;
end;
end;
 

funkce se volá
a:=explode(' ‚,'Je lepší Budvar nebo Granát?‘);

Nejni to extra efektivní, ale rulez, a to je hlavní :-)

pozdější update:Trochu jsem browsil a zjistil, že ty orgie s polema jsou vlastně zbytečný… Když to předěláš z Tpole na TStrings, pojede to eště líp, bo TStrings je, zjednodušeně řečeno, to samý jako array of string.

Andrew


Vložit komentář

K tomuto příspěvku není povoleno přidávat komentáře.