type massive=array[1..100] of string; procedure read_data(fn:string; var mas:massive; n:integer); var f:text; begin assign(f,fn); reset(f); n:=0; while not eof(f) do begin n:=n+1; readln(f,mas[n]); end; close(f); end; procedure write_data(fn:string; var mas:massive; n:integer); var f:text; i:integer; begin assign(f,fn); rewrite(f); for i:=1 to n do writeln(f,mas[i]); close(f); end; procedure sort_data(var mas:massive; n:integer); var i,j:integer; exchange:string; begin for i:=1 to n-1 do for j:=1 to n-i do if mas[j]'')and (last>s) then begin writeln(f_res,last); last:=''; end; writeln(f_res,s); end; end; function test_files(a:string; var f1,f2,f_res:text):boolean; begin test_files:=true; if eof(f1) then begin copy_files(a,f2,f_res); test_files:=false; end; if eof(f2) then begin copy_files(a,f1,f_res); test_files:=false; end; end; procedure merge_files(var f1,f2,f_res:text); var a,b:string; do_it:boolean; begin readln(f1,a); readln(f2,b); do_it:=true; while do_it do begin if a>b then begin writeln(f_res,a); writeln(a); if eof(f1) then begin do_it:=false; a:=''; end else readln(f1,a); end else begin writeln(f_res,b); writeln(b); if eof(f2) then begin do_it:=false; b:=' '; end else readln(f2,b); end; end; if a='' then test_files(b,f1,f2,f_res) else test_files(a,f1,f2,f_res); end; procedure merge(fn1,fn2,fn_res:string); var f1,f2,f_res:text; a,b:string; begin assign(f1,fn1); reset(f1); assign(f2,fn2); reset(f2); assign(f_res,fn_res); rewrite(f_res); if test_files('',f1,f2,f_res) then merge_files(f1,f2,f_res); close(f1); close(f2); close(f_res); end; var a,b,c:text; begin sort('a.txt'); sort('b.txt'); merge('a.txt','b.txt','c.txt'); end.