{******************************************************************** * Task 18 Telephone Directory (Bubble Sort) * * Date written : 4 May 2006 * * Author : CW Chan * ********************************************************************} program t18; const cls_size = 45; var class : string[2]; classfile : text; name, phone : array[1..cls_size] of string; i : integer; sorted : boolean; pass, nstudent : integer; procedure swap (var first, second : string); var temp : string; begin {swap} temp := first; first := second; second := temp; end; {swap} begin {main} write('Class : '); readln(class); assign(classfile, class + 'phone.dat'); reset(classfile); i := 0; while not eof(classfile) do begin i := i + 1; readln(classfile, name[i]); readln(classfile, phone[i]); end; nstudent := i; close(classfile); sorted := false; pass := 1; while (pass < nstudent) and (not sorted) do begin sorted := true; for i := 1 to (nstudent - Pass) do if name[i] > name[i+1] then begin sorted := false; swap(name[i], name[i+1]); swap(phone[i], phone[i+1]); end; pass := pass + 1 ; end; writeln; writeln('Telephone Directory in alphabetic order'); writeln('======================================='); writeln; assign(classfile, class + 'phone.dat'); rewrite(classfile); for i := 1 to nstudent do begin writeln(classfile, name[i]); writeln(classfile, phone[i]); writeln(' ', name[i], ' ':20-length(name[i]) , phone[i]); end; close(classfile); end. {main}