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(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
Vložit komentář
K tomuto příspěvku není povoleno přidávat komentáře.
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
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é :-)
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
naTStrings
, pojede to eště líp, boTStrings
je, zjednodušeně řečeno, to samý jakoarray of string
.Andrew
Vložit komentář
K tomuto příspěvku není povoleno přidávat komentáře.