program insertion_sort; uses crt; const maxN = 1000; var a : array[1..maxN] of integer; b : array[1..maxN] of char; n : integer; procedure insertion; var k,l,v : integer; begin for k:=2 to n do begin v:=a[k]; l:=k; while a[l-1]>v do begin a[l]:=a[l-1]; l:=l-1; end; a[l]:=v; end; end; procedure insertion_char; var k,l : integer; v : char; begin for k:=2 to n do begin v:=b[k]; l:=k; while b[l-1]>v do begin b[l]:=b[l-1]; l:=l-1; end; b[l]:=v; end; end; procedure read_array; var k : integer; begin writeln('Geben Sie das array ein ! . ( Ende mit 0 ) '); writeln;writeln; k:=1; repeat write('a[',k,'] ? '); readln(a[k]); k:=k+1; until a[k-1]=0; n:=k-2; end; procedure read_array_char; var k : integer; begin writeln('Geben Sie das array ein ! . ( Ende mit 0 ) '); writeln;writeln; k:=1; repeat write('b[',k,'] ? '); readln(b[k]); k:=k+1; until b[k-1]='0'; n:=k-2; end; procedure print_array(ab : integer); var k:integer; begin for k:=ab to n do write(a[k],'---'); writeln('ende'); end; procedure print_array_char(ab : integer); var k:integer; begin for k:=ab to n do write(b[k],'---'); writeln('ende'); end; var eg : char; begin clrscr; writeln(' *** Insertion Sort *** '); writeln;writeln; write('Mit Integer oder mit Chars ? (I/C) '); readln(eg); if eg='i' then begin read_array; readln; clrscr; print_array(1); readln; insertion; writeln;writeln; print_array(1); end else begin read_array_char; readln; clrscr; print_array_char(1); readln; insertion_char; writeln;writeln; print_array_char(1); end; readln; end.