this slowpoke moves

Count Chars in Percent

procedure TForm1.Button1Click(Sender: TObject);
var
  text              : string;
  n,i,j,maxstelle,h : integer;
  z,index           : array[0..255] of byte;
begin
  // Eingabe
  text := Memo1.Text;

  // Vorbereitungen
  for i := 0 to 255 do
  begin
    z[i] := 0;
    index[i] := i;
  end;

  // Zählen
  n := Length(text);
  for i := 0 to n do inc(z[ord(text[i])]); // text[i] ist das i-te Zeichen

  // Sortieren
  for i := 0 to 255 do
  begin
    maxstelle := i;
    for j := i+1 to 255 do
      if z[index[j]] > z[index[maxstelle]] then maxstelle := j;
    h := index[i]; index[i] := index[maxstelle]; index[maxstelle] := h;
  end;

  // Ausgabe
  Memo2.Lines.Add(IntToStr(n)+' Zeichen gezählt');
  for i := 0 to 255 do
    if z[index[i]] > 0 then
      Memo2.Lines.Add(IntToStr(index[i])+'  '+chr(index[i])+' : '+
                     IntToStr(z[index[i]])+'  '
                     +FloatToStr(round(z[index[i]]/n*1000)/10)+'%');
end;

Keine Kommentare:

Kommentar veröffentlichen

Beliebte Posts

Translate