....
var
  Form1: TForm1;
  a:array[0..10000] of integer;
  i,n,summand:integer;
  cbest,mbest,cworst,mworst:longint;
implementation
{$R *.DFM}
procedure sortieren (switch:char; n: integer;var c,m :longint);
  {Lokale Prozeduren: fülle Best-bzw. Worst-Feld}
  Procedure best;
    var i:integer;
    BEGIN
       for i:=1 to n do
          a[i]:=i;
    end;
  Procedure worst;
    var i:integer;
    BEGIN
       for i:=1 to n do
          a[i]:=n-i;
    end;
  var i,j,x:integer;
  begin
    c:=0;
    m:=0;
    case upcase(switch) of
     'B':best;
     'W':worst;
    END;
    {Sortieralgorithmus Straight Insertion}
    for i:=2 to n do
      begin
        inc(c);
        inc(m,3);
        x:=a[i];
        j:=i-1;
        a[0]:=x;
        while x<a[j] do
          begin
            inc(c);
            inc(m);
            a[j+1]:=a[j];
            j:=j-1;
          end;
        a[j+1]:=x;
      end;
  end;

 {Tabelle läuft mit dem Timer}
procedure TForm1.Timer1Timer(Sender: TObject);
var quotient:real;
begin
    {Aufruf jeweils eines weiteren Sortieralgorithmus' wäre leicht möglich}
    sortieren('b',n, cbest,mbest);
    sortieren('w',n, cworst,mworst);
    {Ausgabe der Tabellenfelder; rechtsbündig; keine Proportionalschrift}
    form1.stringgrid1.cells[1,i]:=format('%10d',[n]);
    form1.stringgrid1.cells[2,i]:=format('%10d',[cbest]);
    form1.stringgrid1.cells[3,i]:=format('%10d',[mbest]);
    form1.stringgrid1.cells[4,i]:=format('%10d',[cworst]);
    form1.stringgrid1.cells[5,i]:=format('%10d',[mworst]);
    {Untersuchung der Proportionalität eines Zählers zum Quadrat der Anzahl}
    {der Feldelemente}
    quotient:=mworst/n/n;
    form1.stringgrid1.cells[6,i]:=format('%10.5f',[quotient]);
    {Erzeugung weiterer Tabellenzeilen}
    form1.stringgrid1.rowcount:=i+3;
    {Organisation der Schrittweite von n; Zehnerschritte, Hunderterschritte...}
    if n mod (summand*10) =0
       then summand:=summand*10;
    n:=n+summand;
    {Abbruch nach n=10000}
    if n>10000
      then begin
              form1.timer1.enabled:=false;
              {showmessage('Stop');}
           End;
    inc(i)
end;

{Zustandsänderung des Timers gem. Tastendruck}
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
   if form1.timer1.enabled= true
  then form1.timer1.enabled:=false
  else form1.timer1.enabled:=true;
end;

{Beschriftung der Tabellenheader}
procedure knoepfe;
  BEGIN
    form1.stringgrid1.cells[1,0]:='n';
    form1.stringgrid1.cells[2,0]:='C ';
    form1.stringgrid1.cells[3,0]:='M ';
     form1.stringgrid1.cells[4,0]:='C ';
    form1.stringgrid1.cells[5,0]:='M ';
    form1.stringgrid1.cells[6,0]:='Mworst/n^2 ';
    form1.stringgrid1.cells[0,1]:='Start und ';
    form1.stringgrid1.cells[0,2]:='Abbruch mit';
    form1.stringgrid1.cells[0,3]:='Taste';
  END;

procedure TForm1.FormCreate(Sender: TObject);
begin
  knoepfe;
  i:=1;
  n:=10;
  summand:=10;
end;

initialization
  showmessage('Dies Programm gibt die Zähler aus für SI;'+chr(13)+
  +'höchstens 10000 Zahlen werden sortiert.'+chr(13)+'C.Schmitt; 11.99'+chr(13)+chr(13)+'Abbruch mit Tastendruck');
end.
Impressum · Datenschutz