Funkce

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

17. 9. 2004, 09.31 - Computer$

Komentáře

RSS feed komentářů k tomuto článku

1.Lukáš » 17. 9. 2004 9.32 » Reagovat

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;


2.kuba-kubula » 17. 9. 2004 9.33 » Reagovat

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;

3.Andrew » 17. 9. 2004 10.44 » Reagovat

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 :-)


4.Andrew » 17. 9. 2004 15.17 » Reagovat

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(separator,text:String): 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,length(separator))=separator) or (i=length(text)+1) then begin
    if copy(text,lastpos,i-lastpos)<>'' then begin
      setlength(result,length(result)+1);
      result[length(result)-1]:=copy(text,lastpos,i-lastpos);
    end;
    inc(i,length(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


Reagujte!
Jméno e-mail (nezobrazí se)
web 3 plus 2 je

Jak komentovat?

  • Tady formátuje Texy! Co a jak se dozvíte v dokumentaci syntaxe
  • příklad: *kurzíva* **tučně** "text odkazu":http://finwe.info
  • Na nový odstavec jsou potřeba DVA entery!