Автор: Tina 19.05.2004 23:55
Помогите с решением,
Код
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;
Опишите функцию Name(G), определяющую имя мужчины из группы G с ростом x.
Автор: BlackShadow 20.05.2004 0:15
Э-э-э-э.....
знакомое что-то, да Apal?
Автор: BlackShadow 21.05.2004 15:54
Блин, найти не могу... Точно ведь было что-то такое, и, по моему, 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.
Приблизительно так...
Автор: APAL 22.05.2004 14:01
http://pascal.net.ru/forum/index.php?showtopic=2120&hl=mary+jane+kim