TuvanMAN
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Задачу решить надо с однонаправленными линейными списками (каждая строка исходного текстового файла рассматривается как элемент списка), процедурами и текстовыми файлами; Цель задачи: напечатать трех наиболее молодых петербуржцев мужчин. program zadan13_6; type PBook=^TBook; TBook=record Next:PBook; fam:string [15]; ini:string [4]; year: integer; prop: char; pol: char; end; var Book, BegLIst: PBook; Rel:Pointer; FBooks:file of TBook; F1,F0:text; procedure CreateList; Var Book1: PBook; begin Assign (F1,'f1.inp'); Reset (F1); Beglist:=NIL; While not EOF (F1) do Begin Book1:=Book; New (Book); with Book^ do begin Next:=NIL; If Beglist=NIL then Beglist:=Book else Book1^.Next:=Book; Readln (F1, fam, ini, year, prop, pol); end; end; close (F1) end; procedure Writelist (Headline:String); begin Append (F0); Writeln (F0); Writeln (F0,Headline); Book:=Beglist; while Book<>NIL do begin with Book^ do writeln (F0, fam:15, ini:4, year:4, prop:1, pol:1); Book:= Book^.Next; end; Close (F0); end; procedure SORT; var Stop, First:Boolean; Book1,Book2:PBook; Begin Repeat Stop:=True; Book:=Beglist; First:=True; while Book^.Next<>NIL do Begin If Book^.Year>Book^.Next^.Year then Begin Book1:=Book; Book:=Book^.Next; If First then Beglist:=Book else Begin Book2:=Beglist; while Book2^.Next<>Book1 do Book2:=Book2^.Next; Book2^.Next:=Book end; Book1^.Next:=Book^.Next; Book^.Next:=Book1; Stop:=False; end; First:=False; Book:=Book^.Next end until Stop; end; procedure WriteFile; Begin Assign (FBooks,'f6file.out'); Rewrite (FBooks); Book:=Beglist; while Book <>NIL do Begin write (FBooks,Book^); Book:=Book^.Next; end; Close (Fbooks) end; procedure ReadFile; var k:Integer; Book1:PBook; Begin Reset (FBooks); k:=FileSize (FBooks); Release (Rel); Beglist :=NIL; while k>=0 do begin Book1:=Book; dec(k); If k<0 then Break; Seek (FBooks, k); New (Book); If Beglist = NIL then Beglist:=Book; else Book1^.Next:=Book; Read (FBooks,Book^); Book^.Next:=NIL end; Close (FBooks) End; Begin Mark (Rel); CreateList; Assign (F0,'F6.out'); Writelist ('Ishodnyi text'); SORT; Writelist ('Sortirovka'); WriteFile; ReadFile; Writelist ('Vvyvodim ego') Release (Rel); END. | Всего записей: 23 | Зарегистр. 28-09-2010 | Отправлено: 18:04 08-11-2010 | Исправлено: TuvanMAN, 18:08 08-11-2010 |
|