program lista2u; {P.M. - 2. fv, 12. gyak, HBV} { " - Mi a ...-nak/-nek kell? " " - Azert, hogy lassunk vegre egy listas programot is. " - T. Adam } uses listau, crt; type Ttul=function(x:integer):boolean; { Kell a "$F+", majd: Type Ttul=function(x:integer):boolean; Function poz(i:int.):boolean; Proc. eldontes (..., tul:Ttul); ... eldontes(..., poz); "$F-" -- Igy lehet "tulajdonsag-tipus-fuggvenyt megadni } var lista:tlista; rendl:tlista; procedure beolvasas(var lista:tlista); var i:integer; n:integer; { Hany eleme lesz a listanak } elem:telem; { A lista egy leendo eleme } begin write('Az elemek szama? '); readln(n); lista.ures; for i:=1 to n do begin write('A(z) ',i,'. elem: '); readln(elem); lista.beszurmoge(elem); { Mivel a beszurt elem lesz az aktualis } end; end; procedure beill_rend(var lista:tlista; var rendl:tlista); { A beilleszteses rendezest alkalmazza a listara -> rend(ezett) l(ista) } begin rendl.ures; if not(lista.ures_e) then begin lista.elejere; rendl.beszurmoge(lista.elemertek); { lista.kihagy - Azert nem "hatalyos", hogy beken hagyja a "forraslistat"} lista.kovetkezore; while not(lista.vege_e) do begin rendl.elejere; while (not(rendl.vege_e)) and (lista.elemertek>rendl.elemertek) do begin rendl.kovetkezore; end; if lista.elemertek<=rendl.elemertek then rendl.beszurele(lista.elemertek) else rendl.beszurmoge(lista.elemertek); { lista.kihagy - Azert nem "hatalyos", hogy beken hagyja a "forraslistat"} lista.kovetkezore; end; { A kov. ciklus az utolso elemre is vegrehajtja } while (not(rendl.vege_e)) and (lista.elemertek>rendl.elemertek) do begin rendl.kovetkezore; end; if lista.elemertek<=rendl.elemertek then rendl.beszurele(lista.elemertek) else rendl.beszurmoge(lista.elemertek); { lista.kihagy - Azert nem "hatalyos", hogy beken hagyja a "forraslistat"} lista.kovetkezore; end; end; function eldont(x:telem):boolean; { Az alatta levo eljarashoz egy pelda } begin if x>=0 then eldont:=true; end; procedure kivalogatas(felt:ttul; var lista:tlista; var kiv:tlista); begin end; procedure kiiras(lista:tlista); begin lista.elejere; while not(lista.vege_e) do begin writeln('lista.elemertek: ',lista.elemertek); lista.kovetkezore; end; writeln('lista.elemertek: ',lista.elemertek); writeln('ENTER-re vege'); readln; end; begin {$F+} beolvasas(lista); {beill_rend(lista,rendl);} kivalogatas(eldont, lista, kiv); kiiras(rendl); {$F-} end.