Musterlösung zu Aufgabe 4 -- PersonsList.d
DEFINITION MODULE PersonsList;
IMPORT Persons;
FROM StdIO IMPORT FILE;
CONST
NumberOfPers = 50;
TYPE
Range = [1..NumberOfPers];
RangeSet = SET OF Range;
PersList = ARRAY Range OF Persons.PersDat;
IndexList = ARRAY Range OF Range;
TYPE CmpPersDat = PROCEDURE(Persons.PersDat, Persons.PersDat):BOOLEAN;
PROCEDURE InitPersList(
fromFile: FILE;
VAR persList: PersList;
VAR number: CARDINAL): BOOLEAN;
(* Separator is whiteSpace -
* no check !!!
* number: the actually read number of records
* TRUE, if number > 0, otherwise FALSE
*)
PROCEDURE WriteRecords(
f: FILE; pList: PersList;
number : CARDINAL; ind: RangeSet);
(* writes a set of records, defined by ind,
* to open stream f
*)
PROCEDURE Sort(
a: PersList;
number: CARDINAL;
cmp:CmpPersDat;
VAR res: IndexList);
(* sorts the records in ``a'' by building a sorted
* index list ``res''
* comparing by function ``cmp''
*)
PROCEDURE linSearch( VAR p: Persons.PersDat; number: CARDINAL;
less, equal: CmpPersDat;
persList: PersList;
ind: IndexList;
VAR res: RangeSet);
(* the caller is responsible for consistency between
* compare-procedures less, equal, index list ind
* and definiton of components in p
*
* defines a set of indices ``res'' of list ``persList''
* containing records matching with components
* defined in ``p''
*)
END PersonsList.
Musterlösung zu Aufgabe 4 || Übungen || Vorlesung || SS 97 || SAI
Franz Schweiggert, 13.06.1997