.... 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.