Блин, найти не могу... Точно ведь было что-то такое, и, по моему,
Apal дал довольно внятный ответ. Придётся писать заново.
Я так понял, что надо написать функцию не 'Name', т. к. уже есть тип с таким именем, а допустим 'GetName', и не от группы, а от роста.
Код
Type
Name = (Mary, Jane, Kim, Bob, Jan, Pit, Tom, Sara, Bill, Pol);
Data = Record
Male : Boolean; {пол: true - мужской, false - женский}
{вот где зарождается половая дискриминация :)}
Height:140..200; {рост}
Cost : Word; {зарплата}
End;
Group = Array[Name] Of Data;
Const
NameStr:Array[Name] Of String = ('Mary', 'Jane', 'Kim', 'Bob', 'Jan', 'Pit', 'Tom', 'Sara', 'Bill', 'Pol');
Var
Data:Group;
Function GetName(x:Integer):Name;
Var
i:Name;
Begin
For i:=Mary To Pol Do
If Data[i].Male And (Data[i].Height=x) Then
Begin
GetName:=i;
Exit
End;
GetName:=Mary {Будем использовать Mary, как знак того, что в группе нет
мужчин с таким ростом :)}
End;
Var
i:Name;
x:Integer;
Begin
Randomize;
For i:=Mary To Pol Do
Begin
Data[i].Male:=Not(i In [Mary,Jane,Sara]);
Data[i].Height:=Random(61)+140;
Data[i].Cost:=Random(1000)+1000; {у. е. конечно :)}
Write(NameStr[i],'(',Data[i].Height,') takes $',Data[i].Cost)
End;
Write('Enter Height: ');
ReadLn(x);
i:=GetName(x);
If i=Mary Then {Mary - признак того, что подходящего мужика нет :) }
WriteLn('NoBody')
Else
WriteLn(NameStr[i])
End.
Приблизительно так...