TuvanMAN
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору задача такова: надо один из процедур сделать рекурсивным, вот взял процедуру СОРТ Цитата: Код: program zadan; label 1; type zap=record fam:string [15]; ini:string [4]; year: integer; prop: char; pol: char; end; mass=array [1..10] of zap; var aList,bList: mass; Procedure FromTextToTip(f1:string;f1tip:string); CONST M=10; var i:integer; SP:mass; c:char; tip:file of zap; Begin ASSIGN(input,f1); RESET(input); ASSIGN(tip,f1tip); REWRITE(tip); For i:=1 to M do Begin Readln (SP[i].fam, SP[i].ini,c, SP[i].year,c, SP[i].prop, c, SP[i].pol); Write(tip,SP[i]); End; Close(input); Close(tip); End; Procedure ReadFromTipFile(f1tip:string;var SP1:mass); CONST M=10; var i:integer; tip:file of zap; Begin ASSIGN(tip,f1tip); Reset(tip); For i:=1 to M do begin read(tip,SP1[i]); end; Close(tip); End; Procedure WriteToTextFile(f1:string;var SP2:mass; var SP1:mass); CONST M=10; var i:integer; Begin Assign(output,f1); Rewrite(output); For i:=1 to M do begin Writeln(SP2[i].fam,' ',SP2[i].ini, ' ',SP2[i].year, ' ',SP2[i].prop,' ',SP2[i].pol); end; Writeln; Writeln(''); For i:=1 to 3 do begin Writeln(SP1[i].fam,' ',SP1[i].ini, ' ',SP1[i].year, ' ',SP1[i].prop,' ',SP1[i].pol); end; Close(output); End; {Procedure SORT(var SP3:mass); CONST M=10; var k:integer; stop:boolean; zam:ZAP; Begin repeat stop:=True; For k:=1 to M do If ((SP3[k].pol='W') and (SP3[k+1].pol='M')) or ((SP3[k].pol=SP3[k+1].pol) and ((SP3[k].prop='N') and (SP3[k+1].prop='Y'))) or ((SP3[k].pol=SP3[k+1].pol) and (SP3[k].prop=SP3[k+1].prop) and (SP3[k].year<SP3[k+1].year)) then begin zam:=SP3[k]; SP3[k]:=SP3[k+1]; SP3[k+1]:=zam; stop:=False; end until stop; End;} Procedure SORT(i:integer;var SP3:mass); CONST M=10; var k:integer; stop:boolean; zam:ZAP; Begin If i<=M then Begin k:=i; repeat stop:=True; If ((SP3[k].pol='W') and (SP3[k+1].pol='M')) or ((SP3[k].pol=SP3[k+1].pol) and ((SP3[k].prop='N') and (SP3[k+1].prop='Y'))) or ((SP3[k].pol=SP3[k+1].pol) and (SP3[k].prop=SP3[k+1].prop) and (SP3[k].year<SP3[k+1].year)) then begin zam:=SP3[k]; SP3[k]:=SP3[k+1]; SP3[k+1]:=zam; stop:=False; end until stop; SORT (i,SP3); end; End; BEGIN FromTextToTip('f1.INP','f1.TIP'); ReadFromTipFile('f1.TIP',aList); bList:=aList; SORT(1,bList); WriteToTextFile('f4.OUT',aList,bList); END. | | Саму рекурсию так и не понял до конца, но что-то слепил  |