TuvanMAN
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Преподователь при проверке задачки, поменял данные входном файле, раньше они выглядели так Ivanov A.B. 2989 Y M Petrov S.A. 1967 Y M Smirnova P.M. 1955 N W Kuznecova V.N. 1964 Y W Popova T.S. 1980 N W Sokolov L.R. 1995 N M Lebedev A.A 1994 Y M Kozlova I.I. 1989 Y W Novikov A.I. 1960 Y M Morozov B.V. 2999 Y M П.С: Y-это есть прописка, N-иногородние, М-мужики, W-женщины... После изменения данных стали выглядеть так Ivanov A.B. 2989 Y M Petrov S.A. 1967 Y M Smirnova P.M. 1955 N W. И в результирующий файл выводится так Дано Ivanov A.B. 2989 Y M Petrov S.A. 1967 Y M Smirnova P.M. 1955 N W Результат Ivanov A.B. 2989 Y M Petrov S.A. 1967 Y M Smirnova P.M. 1955 N W Надо, чтобы после слова результат сортировало и не выводило женщин и без прописки. Вот на этом подловил препод. А так программа замечательно работала Вот сама прога... program zadan13_5; type PBook=^TBook; TBook=record Next:PBook; fam:string [15]; ini:string [4]; year: integer; prop: char; pol: char; pr:char; end; var Book, BegList: PBook; Rel:Pointer; procedure CreateList; Var Book1: PBook; begin Assign (input,'f1.inp'); Reset (input); Beglist:=NIL; While not EOF (input) do Begin Book1:=Book; New (Book); with Book^ do begin Next:=NIL; If Beglist=NIL then Beglist:=Book else Book1^.Next:=Book; Readln (input, fam, pr, ini, pr, year, pr, prop, pr, pol); end; end; close (input) end; procedure Writelist (Headline:String; Count:integer); var cnt:integer; begin cnt:=0; Append (output); Writeln (output); Writeln (output,Headline); Book:=Beglist; while (Book<>NIL) and ((count=-1) or (cnt<count)) do begin with Book^ do writeln (output, fam:15, ini:5, year:5, prop:2, pol:2); Book:= Book^.Next; inc(cnt); end; Close (output); 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^.Pol='W') and (Book^.Next^.Pol='M')) or ((Book^.Pol=Book^.Next^.Pol) and (Book^.Prop='N') and (Book^.Next^.Prop='Y')) or ((Book^.Pol=Book^.Next^.Pol) and (Book^.Prop=Book^.Next^.Prop) and (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; Begin Mark (Rel); CreateList; Assign (output,'F6.out'); Rewrite (output); Writelist ('DANO',-1); SORT; Writelist ('Vvyvodim 3 molodyh peterburgcev', 3); Release (Rel); END. |